刚才发错了 这道题其实是 C50401 01背包问题的简化版 变相的只用考虑了重量 仍然是套用了max的去找之前存在的最大值

思路

伪代码

if(占地<=当前暂时背包容量) /*先塞进去,有可能是!*/
此位置=max(上一个,上一行位置最大/*继承*/);
else{
。。。没空了,和上一个一样
}

状态转移方程

//w重量 i当前的物品个数 j当前容量 c总容量
if(w<=j) dp[i][j]=max(dp[i-1][j],dp[i-1][j-w]+w);
else dp[i][j]=dp[i-1][j];
//最后直接输出c-dp[n][c](也就是总容量-最大容量

0 条评论

目前还没有评论...

信息

ID
2109
时间
1000ms
内存
256MiB
难度
10
标签
递交数
66
已通过
17
上传者