DP - Bài toán chiếc balo 1
Trạng thái
Trong siêu thị có \(n(0< n \le 1000)\) đồ vật, đồ vật thứ \(i\) có trọng lượng là \(w[i], 0< w[i] \le 1000\) và giá trị là \(v[i], 0< v[i] \le 1000\)
Một tên trộm đột nhập vào siêu thị, tên trộm mang một cái túi có thể chứa tối đa là \(M(0< M \le 5000)\), tên trộm loay hoay với việc chọn các đồ vật sao cho giá trị lớn nhất mà tổng khối lượng vẫn đảm bảo chiếc balo.
Yêu cầu:
Hãy chọn các vật sao cho đặt vừa trong chiếc túi mà tổng giá trị lớn nhất có thể. Mỗi vật chỉ được chọn đúng 1 lần.
Dữ liệu vào Specification
- Dòng đầu tiên chứa hai số nguyên dương \(n\) và \(M (0 < n \le 10^3, 0< M \le 5000)\).
- \(n\) dòng tiếp theo mỗi dòng ghi 2 số nguyên \(w_i\) và \(v_i\) là trọng lượng và giá trị của đồ vật thứ \(i\).
Dữ liệu ra Specification
- Ghi ra giá trị lớn nhất của các đồ vật mà tên trộm có thể lấy.
Sample Input
5 15
12 4
2 2
1 1
1 2
4 10
Sample Output
15
Giải thích: chọn các vật 2, 3, 4, 5
Thông tin
Thông tin bài tập
Điểm
100
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
640 M
I/O
stdin -> stdout
Tác giả
Loại đề bài
Quy hoạch động: Cái túi
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text