背包问题
文章平均质量分 62
yeqm_
作为解题记录
展开
-
poj 3260混合背包
这道题题目应该是写反了,货币的值应该在 1~10000,dp的时候一直wa 也可能是多组数据,不过题目没有说明,将J改大了,再加个外循环检测EOF以后才AC 不算很混的混合背包,因为完全背包和多重背包分离了 背包问题暂告一段落 #include #include #include #include #include #include #include #incl原创 2015-10-17 20:37:14 · 396 阅读 · 0 评论 -
poj 2063 完全背包
可以看做分组背包,每i组为买i基金钱 c[i]*1,c[i]*2.........c[i]*k,然后套dp模板,dp[i][j],第i组已购j元基金 另外不需要每年都dp一遍,直接dp到最高金额 从评论区别人代码学习了就地滚动的方法,每次用dp[i-1][j-k]更新d[i][j]时 j>=j-k,就可以把更新完一遍的dp数组看作上一轮的dp[i-1],按j从高到低更新,高位j的更新不影响低原创 2015-10-15 12:12:08 · 366 阅读 · 0 评论 -
poj 3046 分组背包
分组背包问题在于如何将问题看作分组。 一旦弄清了 分组 和 背包 就可以直接套模板 第一个循环 分组循环 第二个循环 背包循环 第三个循环 分组内循环 #include #include #include #include #include #include #include using namespace std; #define lch(i原创 2015-10-14 21:46:41 · 462 阅读 · 0 评论 -
poj 1837分组背包
参考了别人的思路 点击打开链接 N种距离钩子,m个重量,每个重量放不同的钩子就是一个分组 分组背包: #include #include #include #include #include #include #include using namespace std; #define lch(i) ((i)<<1) #define rch(i)原创 2015-10-13 19:57:34 · 425 阅读 · 0 评论 -
poj 3624
经典的01背包,做完hihocoder那道题后开始啃背包。。。 #include #include #include #include #include #include #include using namespace std; #define lch(i) ((i)<<1) #define rch(i) ((i)<<1|1) #define sqr(i原创 2015-10-12 16:19:19 · 309 阅读 · 0 评论 -
poj 1976 01背包
一开始当成分组背包做,POJ也果断给了个TLE 到底还是对背包理解不够深入 只要将小火车头载客量当成一个背包就行了 #include #include #include #include #include #include #include using namespace std; #define lch(i) ((i)<<1) #define rch(i原创 2015-10-13 12:36:28 · 280 阅读 · 0 评论 -
hihocoder #1091
虽然一看就是dp 然并卵还是看了提示,学习了背包的几种变化 记录一下#include #include #include #include #include #include #include using namespace std; #define lch(i) ((i)<<1) #define rch(i) ((i)<<1|1) #define sqr原创 2015-10-11 21:58:06 · 351 阅读 · 0 评论 -
poj 2151 01背包
在别人列出的题目里面这道题是被归类到hash里面的,然而没有想到如何转化成hash搜索 这道题就是求出 Π每队至少解出一道题= Π(1-每队解出0道题的概率)=P1, Π每队解出不多于n道题的概率 =P2 注意的是P2 不包括解出0道的概率 #include #include #include #include #include #include using name原创 2015-10-22 21:40:50 · 207 阅读 · 0 评论 -
poj 1276 多重背包+二进制解法
典型多重背包 #include #include #include #include #include #include #include #include using namespace std; #define lch(i) ((i)<<1) #define rch(i) ((i)<<1|1) #define sqr(i) ((i)*(i)) #原创 2015-10-16 14:31:12 · 235 阅读 · 0 评论 -
poj2392 1742多重背包
多重背包就是每组物品只能取有限多个 所以dp是要根据情况加一个if判断 首先按最大高度进行升序排序 另外加一个num 记录该数值已经取了多少个当前类型的block #include #include #include #include #include #include #include #include using namespace std; #defi原创 2015-10-16 13:12:46 · 227 阅读 · 0 评论 -
poj1384 完全背包
比较裸的完全背包都可以套模板,数据量小直接AC TLE了就改就地滚动+优化,此题就属于数据量相对较大 #include #include #include #include #include #include #include #include using namespace std; #define lch(i) ((i)<<1) #define原创 2015-10-15 20:24:47 · 400 阅读 · 0 评论