Description
背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少?
Input
第一行两个数V,N下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一件,Mi>1表示至多取Mi件,Mi=0表示数量无限
Output
1个数Ans表示所装物品价值的最大值
Sample Input
10 3
2 1 0
3 3 1
4 5 4
Sample Output
11
解题思路:f[j]表示一定种类物品在容量为j的背包里的最大价值,根据题意分别处理,循环为:1<=i<=n
若是完全背包,状态转移方程为:
f[j]=max{f[j],f[j-w[i]]+c[i]}
(w[i]<=j<=m)
若是多重背包,状态转移方程为:
f[k]=max{f[k],f[k-w[i]]+c[i]}
(1<=j<=p[j],m>=k>=w[i])
程序:
var
function max(x,y:longint):longint;
end;
begin
end.