背包问题
文章平均质量分 78
xiaoxiaoluo
这个作者很懒,什么都没留下…
展开
-
poj 2392 Space Elevator
题目大意:有k中梯子材料,每种材料有个数c_i, 高度h_i,并且这种材料高度不能超过a_i ,问利用这些材料能最高堆多高的梯子。解题思路:先按照a_i从小到大排序,然后分别把a_i作为容量,转换成多重背包问题。二进制拆分:#include #include #include #include using namespace std;struct node{ int h原创 2012-08-01 23:42:37 · 567 阅读 · 0 评论 -
poj 1014 Dividing 二进制拆分,单调队列
题目大意:给你6种大理石,每种大理石i的个数为num[i],价值为i,问你有没有策略能时它分成两份,两份总价值相等。解题思路:0/1多重背包问题。dp[i][j] = max{dp[i - 1][j - k * i] + k * i} 这里的i为第i种大理石的价值, 0多重背包,根据拆分思想,把每种大理石num[i]拆分成2进制表示。然后转换成为0/1背包问题。#includ原创 2012-07-31 23:33:10 · 2118 阅读 · 0 评论 -
poj 1276 Cash Machine
题目大意:给定一个数m,还有一组数,分别表示这个元素的个数num[i], 单个价值为value[i]。要你求最这组元素价值和最接近m的最大值解题思路:多重背包问题,拆分2进制或单调队列同poj 1014一样http://blog.csdn.net/xiaoxiaoluo/article/details/78163782进制拆分方法:#include #include #in原创 2012-08-01 01:11:27 · 568 阅读 · 0 评论 -
poj 1170 多重背包
还是看了这位大牛的http://www.chenyajun.com/2010/05/30/4597题目大意:其实就是个全背包问题~~动态规划给出每种物品的单价,和个数,然后给出这些物品的组合的优惠策略,要你求出购买这些物品的最小消费。《编程之美》里有个买书的问题,跟这题很像。这题难就难在动态规划的维度过多,比如就有3个品种的物品,有种打折策略dp[i][j][k]表示物品0转载 2012-03-22 02:05:14 · 747 阅读 · 0 评论 -
poj 2063 zoj 2224 完全背包问题
参考:http://hi.baidu.com/lewutian/blog/item/6c4401efc84a1ce2ce1b3e94.html题目大意:给你一笔钱,然后给你一个年限,还有每买一份债券,到年底能得到多少利息,要你求过了这个年限后,本金加利息的最大值。每年的年末可以利用上一年得到的本金加利息的钱重新分配一次债券解题思路:典型的完全背包问题,每种债券可以买多份>=0,只要不超转载 2012-05-22 01:39:42 · 721 阅读 · 0 评论 -
poj 1837
参照了 http://blog.sina.com.cn/s/blog_617615cd0100ewej.html题目大意:给一个天平的悬挂点的坐标,和一些砝码,要你全部把砝码挂上去,保证天平平衡,一共有多少种方案解题思路,动态规划,转换成0,1背包问题,用dp[i][j]表示前i个砝码都挂上,平衡度为j的方案数dp[i][j + hooks[k] * weight[i]] += dp[原创 2012-03-30 01:31:08 · 587 阅读 · 0 评论 -
poj 1384 完全背包问题
题目大意:给你一个储蓄罐空的,和满的重量,然后给出各种硬币的价值和对应的重量,要你估计出储蓄罐里面硬币价值和最小为多少,注意要保证重量和恰好为给出满的重量解题思路:完全背包问题,只是求最小值,注意初始化的处理就可以。#include #include #include #include #include using namespace std;const int maxn =原创 2012-05-22 02:47:31 · 2092 阅读 · 1 评论 -
POJ 1742:Coins——单调队列优化的多重背包
转自:http://hi.baidu.com/billdu/item/54bde13de63134be134b1400题目大意:给你N(1 ≤ N ≤ 100)种钞票以及拥有的张数,以及一个给定的值M(1 ≤ M ≤ 100,000 )。你需要统计出用这些钞票能够凑出来的钱数,在1 - M的范围中有多少个。楼教主的“男人八题”之一。作为男人八题,那么当然要难一点才有男人的味道,所以说a转载 2012-07-30 14:47:20 · 4474 阅读 · 1 评论 -
poj 1948 Triangular Pastures 二维背包
题目大意:给定一些棍子求这些棍子能够组成的三角形的最大面积。解题思路:这里要利用三角形的面积公式p = (a + b + c) / 2, 周长的一半三角形面积 = sqrt(p * (p - a) * (p - b) * (p - c))dp[k][i][j]表示前k根棍子,边长为i和j是否能组成一个三角形。所以dp[k][i][j] = dp[k-1][i - edge[k]原创 2012-08-11 00:03:43 · 555 阅读 · 0 评论 -
poj 2184 Cow Exhibition
题目大意:给定一组成员,每个成员包含ts,tf两个值,两者都有负值,要你从这组成员中选出一些成员,保证ts的和不为负数,tf的和也不为负数,并且ts的和与tf的和最大。解题思路:背包问题,把ts看做容量,tf看做价值,由于有负值,所以把最小负值平移到原点。当ts为正数时,由于要利用到上次求到的结果,并且每个物品只能选一次,所以,按照从大到小扫描当ts为负值时,从小到大扫描#incl原创 2012-09-10 01:12:18 · 949 阅读 · 0 评论