
DP
Notdeep__acm
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #260 (Div. 2) C (DP)
题目:C. Boredomtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlex doesn't like boredom. That's why原创 2014-08-09 13:21:29 · 832 阅读 · 0 评论 -
背包问题九讲笔记_01背包
摘自Tianyi Cui童鞋的《背包问题九讲》,稍作修改,方便理解。01背包问题描述已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]。限制:每种物品只有一件,可以选择放或者不放问题:在不超过背包容量的情况下,最多能获得多少价值或收益相似问题:在恰好装满背包的情况下,最多能获得多少价值或收益这里,我们先讨转载 2014-08-09 13:24:48 · 880 阅读 · 0 评论 -
HDOJ 1421 搬寝室 (DP)
题目:搬寝室Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17318 Accepted Submission(s): 5859Problem Description搬寝室是很累的,xhd深原创 2014-08-12 23:09:02 · 818 阅读 · 0 评论 -
HDOJ 1176 免费馅饼 (dp)
题目:免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25521 Accepted Submission(s): 8685Problem Description都说天上不会掉馅饼,但原创 2014-08-12 23:24:29 · 628 阅读 · 0 评论 -
hdu 3433(dp+二分) A Task Process
题意:有n个人,每个人完成一件A任务需要a[i]时间,完成一件B任务需要b[i]时间,问要完成x件A任务y件B任务所需的最短时间是多少?思路二分+DP。 二分时间t,dp[i][j]表示在时间t内前i个人完成j件A任务所能完成的B任务的最大数量。如果dp[i][x]>=y 就是可以的。然后不断迭代得到ans。复杂度:0(n*x^2*log(t)) t范围是40w参考code:/* #pragm原创 2015-07-15 21:11:54 · 822 阅读 · 0 评论 -
hdu 3449(依赖背包) Consumer
题意:给n个箱子,每个箱子有个费用pi,每个箱子里面有m个物品,每个物品有两个属性,一个费用wi和一个价值vi。买物品的时候要把所属的箱子一起买了,问给一个金额W最多能获得多少价值?思路依赖背包。《背包九讲》的第七讲讲了这个。 设dp[i][j]为前i个箱子使用金额j获得的最大价值。 考虑每个箱子内部就是一个01背包,那么在枚举每一个箱子的时候,使用上一轮能满足本轮箱子费用的状态做一个01背包,原创 2015-07-16 00:44:08 · 939 阅读 · 0 评论 -
hdu 5289(二分+RMQ) Assignment
题意:给一个序列,然后求出连续的序列中最大和最小值之差小于k的。思路二分+ST 二分下标,然后找一个最大的区间满足区间内最大最小值相差小于k,当前这个位置对于答案的贡献就是这个区间长度。 求一个静态数组的区间最大最小值,用ST算法就好了。参考code:/* #pragma warning (disable: 4786) #pragma comment (linker, "/STACK:0x8原创 2015-07-28 22:42:31 · 675 阅读 · 0 评论 -
hdu 3466(排序+背包)Proud Merchants
题意:给n个物品,每个物品有三个属性,价格、你至少拥有钱数才能购买该物品的值和购买后能获得的价值。然后你有m块钱,问最多能获得多少价值。思路看起来就是一个01背包加了一个购买钱数的限制。 就用01肯定不行。 用极限来看裸的01背包的限制就是它的的价格,相当于限制值为0,现在给了一个新限制,那么我对这个限制值进行一个从小到大的排序,然后01背包做过去就行了。这样前面就不会影响后面的状态了。 很好原创 2015-07-16 01:17:26 · 762 阅读 · 0 评论