ACM 背包
穿袜子的流氓兔
这个作者很懒,什么都没留下…
展开
-
背包问题总结第一讲——可拆分背包
题目:有N件物品和一个容量为V的背包。第i件物品占空间c[i],价值是w[i],物品可拆分,求解将哪些物品装入背包可使价值总和最大。基本思路: 因为物品可拆分,故为了使整个背包内物品的总价值最大,可按照物品单位价值,依次从大到小装入,使背包的每份空间的价值尽可能大。类型: 贪心算法。策略:按物品单位价值降序依次装入,直至物品剩余为0,或背包剩余空间为0。代码:原创 2014-02-18 15:05:00 · 1464 阅读 · 0 评论 -
背包问题第四讲——多重背包问题
题目:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。分析题意: 个人感觉,这样的问题就是一个变相的完全背包问题,或者干脆就可以转换为0-1背包问题。 如果转化为完全背包问题,则就是限制了物品数量。原来的方程仍然可以用,不过首先要对n[原创 2014-02-18 15:08:05 · 689 阅读 · 0 评论 -
多重背包问题(含模板)
P03: 多重背包问题题目有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本算法这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种物品转载 2014-02-18 16:27:16 · 1119 阅读 · 0 评论 -
背包问题总结第二讲——0-1背包
题目:有N件物品和一个容量为V的背包。第i件物品占用的空间是c[i],价值是w[i],物品不可拆分,求解将哪些物品装入背包可使价值总和最大。基本思路: 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放,不能拆开。 由于物品是不能拆开的,所以第一讲里边的贪心规则就不再适用了,因为有可能放入物品x后,剩余的空间不够放其他的任何一件物品,则导致空间空闲,从而使原创 2014-02-18 15:06:04 · 606 阅读 · 0 评论 -
背包问题总结第三讲——完全背包问题
题目: 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路: 方法有三种:直接转换为O-1背包问题 虽然物品数量不限,但由于背包容量有限,故物品能装入的最大数量也受到限制,第i种物品最多可以装入n[i] =原创 2014-02-18 15:07:01 · 686 阅读 · 0 评论 -
背包小结
int dp[MAXN], m; // m : 背包的总容量(ps 01背包从前往后。完全背包从后往钱。(1)若要求背包必须放满,则初始如下: f[0] = 0 , f[1...V]表示-INF。表示当容积为0时,只接受一个容积为0的物品入包。 (2)若要求背包可以空下,则初始化如下: f[0...V] = 0 ,表示任意容积的背包都原创 2014-02-18 15:41:49 · 632 阅读 · 0 评论