混合背包问题

模板
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背包

  

 

posted @ 2018-02-23 18:26  月亮茶  阅读(93)  评论(0编辑  收藏  举报