- 2
- 0
- 约2.31千字
- 约 25页
- 2019-07-20 发布于四川
- 举报
徐持衡
浙江省温州中学;背包问题作为一个经典问题在动态规划中是很基础的一个部分,然而以0-1背包问题为原题,衍生转变出的各类题目,可以说是千变万化,当然解法也各有不同,如此就有了继续探究的价值。;引言
背包的基本变换
①完全背包
②多次背包
③单调队列优化
其他几类背包问题
①树形依赖背包(选课)
②PKU3093
总结;多次背包问题:给定n 种物品和一个背包。第i种物品 的价值是Wi ,其体积为Vi,数量是Ki件,背包的容量为C。可以任意选择装入背包中的物品,求装入背包中物品的最大总价值。;对于一个左右边界都只增不降的区间最值,可以用单调队列来做到总效率O(n)的维护。
如果要用单调队列来优化多次背包,就必须在多次背包问题中挖掘出一个维护区间最值的子问题。;对于多次背包,用最常见的状态表示是用F[i,j]表示前i种物品,总体积不超过j的最大价值总和。
当前只考虑第i种物品,假设体积v,价值w,数量k。
由于对于体积j,与其相关的只有那些对v的余数与j相同的体积,所以再按照体积j对v的余数分为v份。;我们可以把每一份分开处理,假设现在要考虑余数为d的部分。
用j来标号,规定编号j所对应的体积是d+j*v。
显然编号j可以从编号j-k到j中的任意一个转移而来,因为相邻的体积正好相差v。;区间[j-k,j],这个区间是随着j的递增而左右边界都递
原创力文档

文档评论(0)