
动态规划-01背包
文章平均质量分 59
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
hdu 2955 Robberies(01背包)
DescriptionThe aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught in the end, often because they become too greedy. He has decided to work i原创 2013-08-08 08:32:39 · 1061 阅读 · 0 评论 -
hdu 5410 CRB and His Birthday(背包)
题目链接:hdu 5410 CRB and His Birthday对于每个礼物,第一次买是01背包,以后就是完全背包。#include #include #include using namespace std;const int maxn = 2005;const int inf = 0x3f3f3f3f;int N, M, dp[maxn];int原创 2015-08-21 22:27:07 · 702 阅读 · 0 评论 -
hdu 5000 Clone(背包)
题目链接:hdu 5000 Clone题目大意:DRD具有分身的能力,对于两个分身A和B来说,如果A的各个能力都强于B,那么B就无法生存,先给定DRD的n种能力的上限值,问最多有多少个克隆人可以共存。解题思路:将n项能力值和相同的人算为一类克隆人,那么如果两个人处于同一类的话,一定是可以共存的,所以只要计算哪一类人的数量最多即可。所以用01背包直接搞起,但是因为答案要对1e9+7取原创 2014-09-14 10:26:54 · 966 阅读 · 4 评论 -
zoj 3812 We Need Medicine(01背包)
题目链接:zoj 3812 We Need Medicine题目大意:有n中化学成分,每种成分要么选取重量Wi,获得Ti的TEV值,要么不取,获得0的TEV值。现在对于每种病毒,要求配置质量为Mi的药物,并且TEV值为Si,求化学成分组成。解题思路:看了别人的题解,以前居然不知道背包转移可以用二进制。因为质量总共才50,所以用一个long long的二进制数表示说哪原创 2014-09-10 17:19:34 · 1150 阅读 · 0 评论 -
poj 1948 Triangular Pastures(01背包+暴力)
题目链接:poj 1948 Triangular Pastures题目大意:给出若干个木棍的长度,要求用这些木棍组成一个三角形,求最大面积,不能组成输出-1.解题思路:dp[i][j]表示长度为i和j的边是否能同时被组成,用01背包去计算出所有的可组成情况,另一条边就用s(和)-i-j;然后就是枚举i和j,维护最大值。#include #include原创 2014-04-11 22:37:27 · 1312 阅读 · 0 评论 -
uva 10154 Weights and Measures(01背包)
题目连接:10154 - Weights and Measures题目大意:有若干只乌龟,每只乌龟有重量和负重两个属性,现在求这若干只乌龟最多可以叠多少层。解题思路:01背包的变形, 以负重值作为背包的大小, 层数为所求dp值, 每次以min(当前可负重值-乌龟的重量, 乌龟的负重)考虑。include #include #include using na原创 2013-09-08 23:33:48 · 1444 阅读 · 0 评论 -
uva 10163 - Storage Keepers(01背包)
题目链接:10163 - Storage Keepers题目大意:给出m为仓库的数量, 给出n为有守夜人的数量, 然后给出n个数值,为对应守夜人应付的酬劳,每个守夜人的能力与他需要的酬劳是相等的,并且守夜人可以同时负责多个仓库的安全,不过这样子安全值就变为val[i]/k(val[i]表示第i个守夜人的能力值,k表示他负责的仓库数量, /为取整),先在要的出方案,使得所有仓库中安全值最原创 2013-09-21 10:26:24 · 2437 阅读 · 0 评论 -
uva 10817 - Headmaster's Headache(01背包)
题目链接:10817 - Headmaster's Headache题目大意:某个学校要师资力量不够,要招收新的老师,第一行给出s、m、n,现在在任的老师有m个,然后给出m行表示每个老师的信息,分别是该老师的工资,以及可教授的课程(个数不一定),然后在n行表示可招收的老师信息,同样是工资和课程,s表示该学校开售的课程,问,最少花多少钱可以使得该学校开设的s个课程每个课程有两个老师任教。原创 2013-09-27 21:14:02 · 1876 阅读 · 0 评论 -
uva 590 - Always on the run(01背包)
题目连接:590 - Always on the run题目大意:给出n和k, 然后再给出n * ( n - 1) 行数字,第i个(n - 1)行带表城市i与另外的(n - 1) 个城市之间航班。对于每一行来说已经确定的是哪两个城市之间的航班了,第一个数字代表航班价格的波动周期(天),后面day[i][j]个数代表对应日子的航班价格,现在求出k次航班后从城市1移动到城市n的花费最小原创 2013-09-18 22:28:07 · 1416 阅读 · 0 评论 -
uva 624 - CD(01背包)
题目连接:624 - CD题目大意:要把cd上的音乐导到磁带里,要求尽量使磁带剩余的空间小并按顺序打印出每次磁带中的每个音轨长度。tracks不超过20,且按顺序输出,当有多种答案时, 输出任意一种。解题思路:01背包, 在处理的同时记录最优解。#include #include const int N = 10005;int n, aid, sum,原创 2013-09-04 20:30:55 · 1334 阅读 · 0 评论 -
uva 562 - Dividing coins(01背包)
题目连接:562 - Dividing coins题目大意:给出n个硬币的面值, 要求将这n个硬币分成两堆(不要求个数平均), 尽量使得两堆硬币的和之差的绝对值最小, 病输出最小值的绝对值。解题思路:将sum 总和的一半half看成是背包的容量, 然后进行01背包处理, 然后取尽量接近half的可达到值cur, half - cur 的两倍就是所要求的值ans, 注意一点,原创 2013-09-04 13:43:57 · 1642 阅读 · 0 评论 -
uva 10130 SuperSale(01背包)
题目连接:10130 - SuperSale题目大意:有n件物品, 每件物品有它的价值和重量, 然后对于每一个测试数组有m个人,每个人有可承受的最大重量, 现在要求在每个人的承受范围内尽量使得价值最大, 然后对于物品来说有无数多个, 但是对于每个人来说, 不可以重复拿同一件物品。解题思路:01背包的问题, 将每个人看成是一个背包问题, 求m个人的最有解就是要求的答案了。原创 2013-09-07 18:56:22 · 1476 阅读 · 0 评论 -
uva 357 Let Me Count The Ways(01背包)
题目连接:357 - Let Me Count The Ways题目大意:有5种硬币, 面值分别为1、5、10、25、50,现在给出金额,问可以用多少种方式组成该面值。解题思路:和uva674是一样的, 只是上限不一样, 还有注意下输出。#include #include const int N = 30005;const int val[5] = {原创 2013-09-06 16:10:46 · 1331 阅读 · 0 评论 -
hdu 5501 The Highest Mark(贪心+背包)
题目链接:hdu 5501 The Highest Mark解题思路先按照贪心值将每道题排序,保证在时间允许做完i和j时(i < j),先做i比先做j优,然后做一遍背包即可。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1005;struct State原创 2015-10-11 22:47:57 · 722 阅读 · 0 评论