背包小结

13 篇文章 0 订阅


1.HDU 3466  Proud Merchants  (有限制的背包)

题意:给定n个物品和钱m,每个物品有价格p,限制钱数q,价值v,限制q的意思是你手头的钱必须大等于q才能买这个物品,问最后获得的最大价值。n<=500,m<=5000.

分析见:http://blog.csdn.net/hrhacmer/article/details/9225075


2.HDU 1114  Piggy-Bank (经典的完全背包)

题意:给出一个储钱罐的初始重量(E)和装满后的重量(F),有N种硬币,分别为价值P和重量W。问如何选择硬币使得储钱罐中的硬币总价值最小。

分析:完全背包问题,且要求储钱罐必须装满,所以初始化时要注意。状态转移方程:f[i]=min(f[i],f[i-w]+p)。


3.HDU 1059   Dividing

题意:给出价值为1,2,3,4,5,6的物品个数,问能否分成价值相等的两部分。

分析:多重背包,注意下初始化。还有一个优化:当物品的总价值为奇数时一定不可均分。


4. HDU 3033 I love sneakers!(推荐)

题意:有S款运动鞋,一个n件,总钱数为m,求不超过总钱数且每款鞋子至少买一双的情况下,使价值最大。如果 有一款买不到,就输出"Impossible"。

详见:http://blog.csdn.net/hrhacmer/article/details/9230445


5.HDU 3535  AreYouBusy (推荐)

题意:有N堆工作,每堆工作又若干个事件,每个事件有一个费用和完成工作获得的价值,且每堆工作有一个属性:0 至少做一件事,1 至多做一件事 2 可以做任意件事(可以为0件),问可以得到的最大价值。

分析见:http://blog.csdn.net/hrhacmer/article/details/9237649


6.UVA 624 CD

题意::CD的容量为N,M首歌,每首歌的大小为v,问将哪些歌曲刻在CD上,可以使得CD上没使用的空间最小。

分析:01背包,倒着选择,以便输出。另开一个二维数组记录状态转移时的策略。

代码见:http://blog.csdn.net/hrhacmer/article/details/9239659


7.UVA 526  Dividing coins 

题意:有N个面值各不相同钱币,分成两部分,问这两部分的最下差值是多少。

分析:01背包。以所有钱币总和的一半作为容量。


8. UVA 147 Dollars(推荐)

题意:有十一种面值的钱币,给出一个数额<=300$的钱数,问用这些面值的钱构成有多少种不同的方法。

分析及代码见:http://blog.csdn.net/hrhacmer/article/details/9240975


9.UVA 674  Coin Change

题意:有五种面值的钱币,给出一个数额的钱数,问有多少种组合方法。

分析:同8 UVA 147 Dollars,且整体上要简单许多。


10.POJ 3181 Dollar Dayz (推荐)

题意:数额为N的金钱,问用面值为1,2,3...k的钱可以有多少种不同的组合方法。

具体分析及代码见:http://blog.csdn.net/hrhacmer/article/details/9254009


11.POJ 2184 Cow Exhibition  二维费用背包 (推荐)

题意:一群奶牛要去参加展览。衡量一头奶牛的好差有两个标准:smartness Si (-1000 <= Si <= 1000) and the funness Fi (-1000 <= Fi <= 1000) 。想要从N头奶牛中选出一些使得SUM(Si+Fi)最大,且SUM(Si) 和SUM(Fi)都大于等于0。

具体分析及代码见:http://blog.csdn.net/hrhacmer/article/details/9261981


12.POJ 1276 Cash Machine

题意:给出一定数额的钱和N种面值和数量不同的货币,问能用这些货币组成的最接近这个数额的钱数是多少。

分析:裸的多重背包。二进制优化。


13.POJ 2392 Space Elevator

题意:有N种不同的砖块,每种砖块都有不同数量和长度,以及所能放置距离地面的最大高度。问用这些砖块搭在一起所能达到的最大高度。

分析:多重背包。显然,砖块限制的高度低的一定是放在下面,所以先对砖块的高度从小到大排序。当砖块的高度高于限制时,剩下没用的直接扔掉。


14.POJ 3211 Washing Clothes(不错的题目)

题意:一堆颜色不同的衣服,相同颜色的衣服放在一起,由两个人共同洗。问将衣服洗完最少要花多少时间。(英文不好啊,题目读了好长时间。。)

分析:怎么说呢,应该算是分组进行01背包吧。每次将颜色相同的衣服放在一起,并分成差值尽可能小的两部分,将较大的一部分加起来,就是最少花费时间。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值