Problem5566--多重背包问题 III

5566: 多重背包问题 III

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

本题为多重背包模板题。和多重背包问题 I 相比,本题扩大数据规模。时间复杂度 $O(N*V*logS)$ 还是会 TLE。考虑单调队列来优化,去掉复杂度中的 $logS$。时间复杂度变为 $O(N*V)$。
有 $N$ 种物品和一个容量是 $V$ 的背包。
第 $i$ 种物品最多有 $s_i$ 件,每件体积是 $v_i$,价值是 $w_i$。
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
输出最大价值。

Input

第一行两个整数,$N\ (0 < N \leq 1000),\ V\ (0 < V \leq 20000)$,用空格隔开,分别表示物品种数和背包容积。
接下来有 $N$ 行,每行三个整数 $v_i,\ w_i,\ s_i\ (0 < v_i,\ w_i,\ s_i \leq 20000)$,用空格隔开,分别表示第 $i$ 种物品的体积、价值和数量。

Output

输出一个整数,表示最大价值。

Sample 1 Input

4 5
1 2 3
2 4 1
3 4 3
4 5 2

Sample 1 Output

10

Source/Category

基础算法 4.123.多重背包