Gửi bài giải

Điểm: 5,00
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C++

Cho n bình hoa và k bó hoa được đánh số thứ tự từ lớn đến nhỏ. Giá trị thẩm mĩ khi cắm hoa j vào bình i là V[ i ][ j ]. Mỗi bình chỉ có thể cắm 1 hoa và mỗi hoa chỉ có thể cắm trong 1 bình. Hoa có thứ tự j phải cắm trước hoa thứ j+1. Hãy cắm các hoa vào các bình sao cho tổng thẩm mĩ là lớn nhất.

 

Ví dụ

Input
3 5
3 5 4 7 4
9 6 7 5 9
2 5 11 7 9
Output
21

Giải thích ví dụ

  • Gọi L[ i ][ j ] là tổng thẩm mĩ khi xét đến hoa i và bình j. Ta có:
  • nếu số hoa nhiều hơn số bình (i>j) thì không có cách cắm hợp lý, tổng thẩm mĩ = - MaxINT
  • Nếu số hoa bằng số bình: thì chỉ có 1 cách cắm và tổng thẩm mĩ là tổng từ v[i][1] đến v[i][i] Ngược lại số hoa ít hơn số bình thì có 2 trường hợp xảy ra:
  • Cắm hoa i vào bình j: Tổng giá trị thẩm mĩ là L(i-1,j-1)+v(i,j) (bằng tổng giá trị trước khi cắm cộng với giá trị thẩm mĩ khi cắm hoa i vào bình j)
  • Không cắm hoa i vào bình j (có thể cắm vào bình trước j): giá trị thẫm mĩ của cách cắm là như cũ : L(i,j-1) LẤY MAX HAI GIÁ TRỊ NÀY

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.