![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
背包
文章平均质量分 54
MartaYang
这个作者很懒,什么都没留下…
展开
-
HDU 5119 Happy Matt Friends【背包+位运算】
题意:有N个数,从这些数中选一个或多个进行亦或运算,问一共有多少种选法使得最后的亦或结果大于给定的M。 思路:这道题要用dp,应该是比较容易想到的,其实就是一个背包问题原创 2017-03-03 13:47:54 · 422 阅读 · 0 评论 -
HDU 2955 Robberies【01背包】
题意:说强盗要去几个银行偷盗,已知各个银行的钱数和被抓的概率,以及强盗能容忍的最大的被抓概率。求他在被抓概率小于容忍值的情况下最多能偷到多少钱? 思路:第一反应:01背包,将每个银行当物品,钱数作为价值,被抓概率做容量。但这有问题,被概率不能当做容量,因为被抓概率并非简单的相加,而是要转化为不被抓概率相乘再用1减,于是这就不好写出递推关系了!于是换种思路,这种问题还是得01背包,只是将价值和容量换一换,将抢到的总钱数作为容量,不被抓的概率作为价值,这样就有:dp[i][j]=前i个银行中,抢到的总价值不大原创 2017-08-18 14:27:23 · 279 阅读 · 0 评论 -
HDU 2844 Coins【多重背包】
题意:有n种不同的钱币,每种钱币的张数给定,问从这些钱币中可以组合出多少种价格,价格范围为1~m? 思路:将不同面值的钱币看做背包,符合多重背包的模型,这里讲每个钱币的花费和价值都令为它的面值,这样之后统计能组合出多少种价值的时候直接判断dp[i]==i?(意为当用不超过i的花费能取到的最大价值为i时即为可以组合到该价格)原创 2017-09-03 21:56:22 · 279 阅读 · 0 评论 -
HDU 3092 Least common multiple【完全背包】
#include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; int vis[3005],num,p[3000],ans[3010]; double dp[3010]; void cpnl() // cpnl means creat prime number list { memset(vis,0,sizeof(vis)); num=0; for(原创 2017-09-05 23:39:28 · 425 阅读 · 0 评论 -
HDU 2159 FATE【二维背包+完全背包】
题意:现在玩游戏欲升级,升级需要经验值n,杀怪可以赚经验值,但是会扣忍耐度,游戏中有k种怪,数目都无限多。现在玩家还有m点忍耐度,问能否在最多杀s个怪的情况下升级,若能则输出剩余的最大忍耐度。 思路: 1、此题有两个约束,一个是忍耐度,一个是最多杀的怪物数。抽象来说意味着对于每件物品,具有两种不同的费用。此即为二维背包的模型!而二维费用背包模型最常见的形式便是:物品总个数有上限限制,如此题的最多杀s个怪。而关于二维背包的处理,无非是增加一个状态维度即可,转移方程类比着选或不选第i个物品的思路写出即可。原创 2017-08-30 20:33:26 · 621 阅读 · 0 评论 -
区分各种背包【01背包、完全背包、多重背包、2维背包】
简练——区分各种背包原创 2017-08-30 20:41:06 · 668 阅读 · 0 评论