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