混合背包问题
模板
for i=1...N
if 第i件物品是01背包
for v=V.....0
f[v]=max{f[v],f[v-c[i]]+w[i]
else if 第i件物品是完全背包
for v=0.....V
f[v]=max{f[v],f[v-c[i]]+w[i]}
else if 第i件物品是多重背包
for v=V....0
for j=0....a[i]
if(j*c[i]<=v) f[v]=max{f[v],f[v-c[i]*j]+j*w[i]}
===========================
但是这样会T,怎么办,将多重背包二进制分解,转化为01背包

浙公网安备 33010602011771号