P1855 榨取kkksc03
输入输出样例
输入 #1复制
6 10 10
1 1
2 3
3 2
2 5
5 2
4 3
输出 #1复制
4
总结目录
1 问题归类与状态方程的书写,对于恰好背包,非恰好背包的理解
2 对于三维DP的未优化的代码细节,结合基础题 “采药” 进行说明
1 问题归类与状态方程的书写
这题很明显是一个背包问题。但是特殊在于它是一个二维费用的背包问题,关于二维费用背包问题可见下面这个博客
https://www.kancloud.cn/kancloud/pack/70129
在本题中,背包的容量有2类,一个是金钱,一个是时间,因此每个物品的cost有2种。而物品的价值在这里没有发生改变,基本上是恒定为1的。
如果使用恰好背包,定义dp[i][j][k]为:考虑前i种物品,资源1小号恰好为j,资源2消耗恰好为k时候的方案中的价值最大值。此时
dp[i][j][k]=max { dp[i-1][j][k],dp[i - 1][m - list[i].money][t - list[i].time] + 1 };
如果使用非恰后背包,方程是一样的,定义dp[i][j][k]为:考虑前i种物品,资源1小号小于等于j&#