P1417 烹调方案

输入输出样例
输入 #1复制
74 1
502
2
47
输出 #1复制
408
总结目录
1.什么是泛化物品
2.状态方程的书写,排序与DP的原因
1 什么是泛化物品
参考 https://www.kancloud.cn/kancloud/pack/70132
泛化物品是指,物品的价值会随着物品的cost而变化。假设cost为一个变量,那么value=value(cost)。在过去的背包问题中,01背包,完全背包,多重背包物品的价值都是不会改变的。而在分组背包中,先后遍历了组,cost,组内物品,其本质是将节点进行了压缩,取相同cost下的最大价值(类似于01背包中说的“一个简单的优化”)。因此,泛化物品的主要要点有2个,一个就是val是cost的函数,而根据题目得到这个函数需要进行状态压缩。

在01背包中,物品的价值只有在恰好为cost的时候有价值,即 val(cost) != 0,而 其余的时候 val == 0. 在附件背包中,先通过01背包对同一组内的状态进行压缩,将多种方案泛化为一个物品,然后再在总体计算的时候使用分组背包进行计算。
特别的,我们可以计算两个泛化物品合并为一个泛化物品,计算的方法如上所示,只需枚举给两个物品的资源,然后进行筛选最优(即状态压缩即可)
for v==0: V //总的资源为V
for k==0:V //分配给物品1的c

最低0.47元/天 解锁文章
9万+

被折叠的 条评论
为什么被折叠?



