Bài toán cái túi 0/1

Khó

quy hoạch động5 test · 3 giây

Có n đồ vật, vật i nặng wᵢ và có giá trị vᵢ. Túi chịu được tối đa W. Mỗi vật lấy tối đa một lần. Tổng giá trị lớn nhất có thể mang là bao nhiêu?

  • dp[c] = giá trị lớn nhất với sức chứa c. Duyệt c từ lớn về nhỏ để mỗi vật chỉ được dùng một lần.

Dữ liệu vào

Dòng 1: n W (1 ≤ n ≤ 100, 0 ≤ W ≤ 10⁵).

n dòng: w v (1 ≤ w ≤ 10⁵, 1 ≤ v ≤ 10⁹).

Dữ liệu ra

Tổng giá trị lớn nhất (có thể vượt 32-bit).

Ví dụ

Input

3 8
3 30
4 50
5 60

Output

90

Lấy vật 1 và 3: nặng 8, giá trị 90

Input

1 2
3 100

Output

0

Không vật nào vừa túi

Bài tiếp theo: Xoay ma trận 90° →

Input (stdin)

Output

Bấm “Chạy thử” để xem kết quả với input bên trái.