多重背包模板(输入输出自行解决,只给核心代码)
for(int i=1;i<=n;i++)
for(int j=T;j>=w[i];j--)//w是重量,v是价值
for(int k=0;k<=min(j/w[i],p[i]);k++)
f[j]=max(f[j],f[j-k*w[i]]+k*v[i]);
//f[j]表示面对前i个物品时,载重为j的背包能装的最大价值;
二维费用模板(输入输出自行解决,只给核心代码)
for(int i=1;i<=n;i++)
for(int j=p;j>=w[i];j--)
for(int k=q;k>=v[i];k--)
f[j][k]=max(f[j][k],f[j-w[i]][k-v[i]]+c[i]);