
背包
文章平均质量分 54
不许动我的松子
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu2602 — Bone Collector
基础01背包,需要注意的是输入时先输入骨头的价值,然后输入骨头的体积 #include #include #include using namespace std; const int MAXN=1005; int v[MAXN]; int w[MAXN]; int dp[MAXN]; int main() { int t; cin>>t; while(t原创 2015-07-16 09:39:59 · 288 阅读 · 0 评论 -
hdu2546 — 饭卡 (01背包)
题目大意:食堂有n种菜,饭卡余额为m,当要购买一种商品前,若当前饭卡余额小于5,则购买不成功,反之则购买成功,即使购买后饭卡余额为负值,给出每种菜的价格和卡上余额,求最少可使卡上余额为多少 思路分析:这一题中,需要注意的是花费即物品本身价值,还有一个 m f [ j ] = max ( f [ j ] , f [ j - cost [ i ] ] + cost [ i ] )原创 2015-07-16 09:23:26 · 276 阅读 · 0 评论 -
hdu2955 — Robberies (01背包)
题目大意:Roy去抢银行,问在给定的被抓住的概率下,Roy可以抢的金钱数额最多,且小于给定概率 输入:第一行输入一个整数 T,为案例数,每组案例第一行输入给定概率 P 和银行数目 N,接下来 N 行输入该银行的钱数 Mj 和被抓概率 Pj 思路分析:值得注意的一点是,要将可得金钱数目当作价值,将每个银行的金钱数当作花费,状态转移方程为 f [ j ] = max ( f [ j ] ,原创 2015-07-15 20:56:15 · 260 阅读 · 0 评论 -
hdu1864 — 最大报销额
题目大意:给出n张发票,每张发票可报销的类型只有 A、B、C三类,若有其他不予报销,其中可报销的每张发票总额不超过1000,单项消费金额不超过600,给出报销额度,问可报销的最大总额 思路分析:该题花费即价值,在输入时进行筛选,不符合条件的发票不进行处理,符合条件的将该张发票的总金额计算出来,为方便处理,将所有涉及金额数目*100 方程为 f [ j ] = max ( f [ j ]原创 2015-07-16 09:35:42 · 401 阅读 · 0 评论 -
hdu1203 — I NEED A OFFER! (01背包)
思路分析:动态转移方程 dp [ j ] = min ( dp [ j ] , dp [ j - cost [ i ] ] * pro [ i ] ) ,其中cost [ i ] 为学校 i 的申请费,pro [ i ] 为申请学校 i 成功的概率。申请学校不成功的最小概率即为至少得到一份 offer 的最大概率, dp [ j ] 在总金钱数额为 j 的情况下申请 i 所学校不成功的最小概率。其原创 2015-07-16 19:17:19 · 284 阅读 · 0 评论 -
hdu1494 - 跑跑卡丁车 (01背包)
中文题,题目大意就不描述了,需要注意的坑点是使用加速卡时不能获得能量,还有就是要多组案例输入。。。一组案例输入不行。。。WA了好多发。。。 思路分析: 因为最多只能有280%的能量,没20%的能量看作一个单位,所以一共可以有15种状态,dp[ i ] [ j ]表示当前有j个单位的能量跑完i段的最小时间 状态转移方程为:j dp[ i ][ j + 1 ] = min( dp[原创 2015-08-13 19:49:03 · 469 阅读 · 0 评论 -
hdu1114 — Piggy-Bank (完全背包)
题目大意:已知一个空存钱罐的重量,和存钱之后的重量,求可能的最小的钱的数目 思路分析:完全背包有两个状态转移方程,一种时间复杂度为O(VNlog V/weight[i]),一种为O(VN),根据题目给出数据,第一种会超时,所以用第二种,第二种的状态转移方程为 dp[j]=min(dp[j],dp[j-w[i]]+p[i]) (其中j:w[i] to V),需要注意的是因为是求最小值,原创 2015-07-21 15:25:33 · 491 阅读 · 0 评论 -
hdu2191 — 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)
题目大意:一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。问用有限的资金最多能采购多少公斤粮食。 思路分析:将多重背包问题转化为01背包,两种转化方法均不会超时,状态转移方程为 dp [ j ] = max ( dp [ j ] , dp [ j - p2 [ i ] ] + h2 [ i ] (j : n to p2[ i ] ), 两种方法的代原创 2015-07-21 20:53:11 · 276 阅读 · 0 评论 -
hdu2182 - Frog
题目大意:有一只青蛙,在一条长度为n的路上,总共可以跳k次,每次跳的t个单元(A 思路分析:01背包的变形,dp[ i ][ j ] 为青蛙跳j次到达i位置可以吃到的最多的昆虫数,状态转移方程为dp[ i ][ j ] = max( dp[ i ][ j ] , dp[ t ][ j - 1 ] + p[ i ] ),需要注意的一点是青蛙的起点的昆虫数 #include #include原创 2015-08-14 20:44:11 · 1130 阅读 · 0 评论