摘要: 首先,什么叫多重背包呢?大概意思就是:一个背包有V总容量,有N种物品,其价值分别为Val1,Val2……,Val3,体积对应的是Vol1,Vol2,……,Vol3,件数对应Num1,Num2……,Num3求背包至多装满的最大总价值。其实,首先可以当作01背包来做,这时候复杂度就是O(V*sum(Num[i]));简单代码来说就是 for(int i=1;i=Vol[i];k++) dp[k]=max(dp[k],dp[k-Vol[i]]+Val[i]);很容易超时。如果M大的话。从大神的背包九讲看到一个化成O(Vsum(log(Num[i])))大概意思就是... 阅读全文
posted @ 2014-03-11 14:58 dengyaolong 阅读(122) 评论(0) 推荐(0) 编辑