DP - Bài toán chiếc balo 1
Point: 100.0
Time limit: 1.0s
Memory limit: 640 M
Input:
stdin
Output:
stdout
Author:
Problem type
Quy hoạch động: Cái túi
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text
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