Jacky2009 @ 2022-06-07 23:46:32
for(int i=1;i<=cnt;i++){
for(int j=n;j>=0;j--){
for(int k=0;k<vl2[i].size();k++){
if(j<vl2[i][k].siz)continue;
dp[j]=max(dp[j],dp[j-vl2[i][k].siz]+vl2[i][k].val);
}
}
}
以上就是我用分组背包AC的核心代码。可见这用了滚动数组“优化”(bushi
然而删掉滚动数组变成
for(int i=1;i<=cnt;i++){
for(int j=n;j>=0;j--){
for(int k=0;k<vl2[i].size();k++){
if(j<vl2[i][k].siz)continue;
dp[i][j]=max(dp[i][j],dp[i-1][j-vl2[i][k].siz]+vl2[i][k].val);
}
}
}
就WA20pts了。 本蒟蒻十分大雾,希望各位神犇能给予援助。
by Rainybunny @ 2022-06-08 07:10:50
后面这个,从 dp[i-1][*]
转移到 dp[i][*]
最多只能取一个物品。第一维的变化应该和
by 我是人999 @ 2022-06-20 21:57:45
转移时好像没有考虑这组物品都不取的情况?