【动态规划】背包
文章平均质量分 67
x314542916
不怕比我聪明的人,只怕比我聪明但比我还要努力的人
展开
-
NYOJ 654 喜欢玩warcraft的ltl -- 01背包 一中常数优化
一个常数优化前面的伪代码中有for v=V..1,可以将这个循环的下限进行改进。由于只需要最后dp[v]的值,倒推前一个物品,其实只要知道dp[v-w[n]]即可。以此类推,对以第j个背包,其实只需要知道sumc[i->n](第i物品到最后一个物品的消耗和,因为前面的对结果没有影响)即可,即代码中的1 for i -> 1 to N2 do for v -> V to 03原创 2013-03-28 21:32:13 · 1277 阅读 · 0 评论 -
HDU 3033 I love sneakers! -- 分组背包 每组最少拿一个
/* http://acm.hdu.edu.cn/showproblem.php?pid=3033 I love sneakers! 分组背包 每组最少拿一个 注意初始化 和 每组物品必须同时处理*/#include #include #include #include #define CLR(c,v) (memset(c,v,sizeof(c)))using name原创 2013-03-27 11:37:54 · 796 阅读 · 0 评论 -
HDU 3496 Watch The Movie -- 二维费用背包 费用刚好完全消耗
/* http://acm.hdu.edu.cn/showproblem.php?pid=3496 Watch The Movie 二维费用的背包 其中第二费用为隐藏条件 恰好第二费用刚好完全消耗,注意初始化。别太粗心了*/#include #include #include #include #define CLR(c,v) (memset(c,v,sizeof(c)))u原创 2013-03-26 21:19:56 · 667 阅读 · 0 评论 -
HDU 1011 Starship Troopers - 01树形dp 有坑啊!!
/* http://acm.hdu.edu.cn/showproblem.php?pid=1011 Starship Troopers 01树形dp 题意:多个舰队,攻打bug的洞穴,每一个洞穴里面有很多bug和一些brain,我们需要派一个舰队去获得更多的brain 这个过程我们遵循:洞穴为一个树形结构(没有环),洞穴的入口为1(root节点),如果洞穴i在洞穴j的前面, 则必须先进攻原创 2013-04-09 18:19:56 · 708 阅读 · 0 评论 -
HDU Big Event in HDU - 多重背包
/* http://acm.hdu.edu.cn/showproblem.php?pid=1171 Big Event in HDU 题意 多重背包 将器材分成两份,尽量平均*/#include #include #include #include #define CLR(c,v) (memset(c,v,sizeof(c)))using namespace std;con原创 2013-03-26 10:04:30 · 711 阅读 · 0 评论 -
HDU 3236 Gift Hunting - 分组背包 相当于两个01背包
/* http://acm.hdu.edu.cn/showproblem.php?pid=3236 Gift Hunting 题意:某人有两张卡,卡上的钱不能合并消费,买东西的时候物品有两个属性,一个是必须买的(即girlfriend need) 还有一个不是必须买的,同一样物品用不同的卡消费相同并且只能购买一次,我们需要最大的价值(即happy值). 思路: 分组背包,现将必买的东原创 2013-04-09 18:17:31 · 1183 阅读 · 0 评论 -
Consumer -- 依赖背包
http://acm.hdu.edu.cn/showproblem.php?pid=3449 Consumer#include #include #include #include #include #include using namespace std;#define CLR(c,v) (memset(c,v,sizeof(c)))template _T Max(_T a原创 2013-04-03 09:13:31 · 677 阅读 · 0 评论 -
Hdu 1059 Dividing -- 多重背包
/* http://acm.hdu.edu.cn/showproblem.php?pid=1059 Dividing 多重背包, 六种质量(1,2,3,4,5,6)的大理石,每种n[i]长,是否能分割为等质量的两份大理石,因为格式问题纠结死了*/#include #include #include #include #define CLR(c,v) (memset(c,v,si原创 2013-03-26 09:12:34 · 545 阅读 · 0 评论 -
HDU 4501 小明系列故事——买年货 -- 分组背包变体
/* http://acm.hdu.edu.cn/showproblem.php?pid=4501 小明系列故事——买年货 题意:一个现金,一个优惠积分,都可以购买东西,并且只需要其中一个满足物品的消耗即可购买 另外可以免费挑选1-5个商品赠送 求最大的收益价值 每种物品给出三个消费(现金消耗,积分消耗,免费权消耗),但是这三个消费并不是同时需要满足, 所以我们可以将这个问题转化为一个原创 2013-04-09 08:25:37 · 1106 阅读 · 0 评论 -
HDU 1561 The more, The Better - 依赖背包+树形dp基础
/* http://acm.hdu.edu.cn/showproblem.php?pid=1561 The more, The Better 依赖背包 -> 树形dp题意: 给一个树形结构,问最多拿max个城市 ,能获得的最大价值多少,拿下面的一定要先拿上面的。解题思路:定义状态dp[i][j] : 当前i节点及其子树下最多选择j个城市的最大值为dp[i][j];我们考虑到特殊状态:i原创 2013-04-08 08:03:27 · 3598 阅读 · 0 评论 -
HDU 3535 AreYouBusy -- 分了组的混合背包
混合背包,还分组了 ,三种类型的set 最多取一个,最少取一个和没有限制/* http://acm.hdu.edu.cn/showproblem.php?pid=3535 AreYouBusy 混合背包,还分组了 ,三种类型的set 最多取一个,最少取一个和没有限制*/#include #include #include #include #define CLR(c,v) (m原创 2013-03-26 18:56:23 · 780 阅读 · 0 评论 -
1114 Piggy-Bank - 完全背包 恰好达到状态最小价值
http://acm.hdu.edu.cn/showproblem.php?pid=1114 Piggy-Bank#include #include #include #include #include #include using namespace std;#define CLR(c,v) (memset(c,v,sizeof(c)))template _T Max(_T原创 2013-04-03 09:40:44 · 675 阅读 · 0 评论 -
HDU 2844 Coins -- 多重背包
#include #include #include #include #include using namespace std;#define CLR(c,v) (memset(c,v,sizeof(c)))const int INF = 1<<30;const int inf = -(1<<30);const int M = 1e5 + 10;int dp[M];原创 2013-03-25 21:26:19 · 626 阅读 · 0 评论 -
HDU 1712 ACboy needs your helpss - 分组背包+最多那一个
/* http://acm.hdu.edu.cn/showproblem.php?pid=1712 ACboy needs your helpss 分组背包 每组最多拿一个 ,一定要注意初始化,当前需要循环的初始化为上一次的结果,才能保证全局最优解 这题目卡cin,数据太多了,让我超时了一次 另外这题目还有一个办法,改变循环顺序也可使得每组至多拿一个物品*/#include原创 2013-03-27 21:29:00 · 557 阅读 · 0 评论