背包九讲
pfeiKing
安安静静地先稳住
展开
-
第一重关:01背包
问题描述: 已知如下条件: N个物品 容量为V的背包 vi:第i个物品所占用的容量空间 wi:第i个物品所获得的价值数值 求解: 在一个物品只能被选取一次的情况下,该背包可以装下的最大价值是多少? 解题思路:(暴力) KEY:第 i 个物品,在当剩余空间为 j 的时候,是否取这个物品。 for (int i = 1; i <= n...原创 2019-08-29 19:34:54 · 148 阅读 · 0 评论 -
第二重关:完全背包
问题描述: 已知如下条件: N个物品 容量为V的背包 vi:第i个物品所占用的容量空间 wi:第i个物品所获得的价值数值 求解: 在一个物品可以被任意选取的情况下,该背包可以装下的最大价值是多少? 解题思路:(暴力) KEY:第 i 个物品,在当剩余空间为 j 的时候,是否取这个物品。 for (int i = 1; i <= ...原创 2019-08-29 19:51:12 · 109 阅读 · 0 评论 -
第三重关:多重背包
问题描述: 已知如下条件: N个物品 容量为V的背包 vi:第i个物品所占用的容量空间 wi:第i个物品所获得的价值数值 ni:第i个物品最多选取的个数 求解: 该背包可以装下的最大价值是多少? 解题思路: 该问题可以转化为01背包,一个物品可以被最多选择ni次,那么就相当于有ni个该物体,那么每一个物品都可以这么去扩充,那么此时...原创 2019-08-29 20:31:01 · 140 阅读 · 0 评论 -
第四重关:混合背包
问题描述: 已知如下条件: N个物品 容量为V的背包 vi:第i个物品所占用的容量空间 wi:第i个物品所获得的价值数值 有的物品只能选取一次,有的物品可以选取多次,有的物品可以选取无限次。 求解: 该背包可以装下的最大价值是多少? 解题思路: 该问题可以直接转换为多重背包去求解,但部分情况下,这种类型的问题是先用一种类型的背包,...原创 2019-08-30 19:31:34 · 187 阅读 · 0 评论 -
第五重关:二维费用背包
问题描述: 已知如下条件: N个物品 容量为V的背包 背包负重极限为W vi:第i个物品所占用的容量空间 wi:第i个物品所占用的负载值 valuei:第i个物品所获得的价值数值 对于每个物品的选取,根据选取规则的不同,采用个不同的背包算法: 只能选择一次:01背包 可以选择无限次:完全背包 可以...原创 2019-08-30 19:50:30 · 167 阅读 · 0 评论 -
第六重关:分组背包
问题描述: 已知如下条件: N个物品 容量为V的背包 vi:第i个物品所占用的容量空间 valuei:第i个物品所获得的价值数值 这些背包被分成了p个组,并且每个组里面的物品最多选择一件或者不选 求解: 该背包可以装下的最大价值是多少? 解题思路: 如果不看组内的细节的话,其实这就是一个01背包,所以第一层FOR循环,显然就是遍历...原创 2019-08-31 10:37:04 · 175 阅读 · 0 评论 -
第七重关:有依赖背包
问题描述: 已知如下条件: N个物品 容量为V的背包 vi:第i个物品所占用的容量空间 valuei:第i个物品所获得的价值数值 但是包和包之间有依赖关系,例如,如果要是想选择A那么必须要先选择B(这里指考虑一重依赖关系,并且不会形成依赖环) 求解: 该背包可以装下的最大价值是多少? 解题思路: 开始的思路还是一样的枚举每一件物品...原创 2019-08-31 11:00:41 · 227 阅读 · 0 评论 -
第八重关:泛化物品
泛化物品是一种思想: 1)考虑到这样一件物品,它并没有固定的费用和价值,但是它的价值随着你分配给它的费用而变化。 2)在背包容量为 V 的背包问题中,泛化物品是一个定义域为中的整数的函数 H,当分配给它费用为 v 时,能够的到的价值是H(v)。 3)泛化物品就是一个数组,给它一个 v,得到相应的 H 值。 题目:HDU 1712(题意非常简洁) #include...原创 2019-09-01 09:13:54 · 253 阅读 · 0 评论