Zero_One_Pack

Posted defense

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zero_One_Pack相关的知识,希望对你有一定的参考价值。

  • 状态定义:\(f_i,j\)表示将前\(i\)件物品放入容量为\(j\)的背包中所能获得的最大价值
  • 推理:第\(i\)件物品放或不放
  • 方程:\(f_i,j=max(f_i-1,j,f_i-1,j-C_i+W_i)\)

    $\Updownarrow $

    *空间优化:
  • \(f_j\)表示剩余\(j\)的被包能放下的最大价值
  • 方程:\(f_j=max(f_j,f_j-C_i+W_i)\)(必须逆序枚举\(j\),否则无法满足无后效性)
    代码
   for(register int i = 1 ; i <= n ; i++)
       for(register int j = V ; j >= C[i] ; j--)
           f[j] = max(f[j] , f[j - C[i]] + W[i]);
       
    

以上是关于Zero_One_Pack的主要内容,如果未能解决你的问题,请参考以下文章