背包问题
Marcus-Bao
这个作者很懒,什么都没留下…
展开
-
hihocoder #1270 建造基地 完全背包
描述在遥远的未来,小Hi成为了地球联邦外空间联合开发工作组的一员,前往一颗新发现的星球开发当地的重金属资源。为了能够在当地生存下来,小Hi首先要建立一个基地。建立基地的材料可以直接使用当地的石材和富裕的重金属资源。基地建设分为N级,每一级都需要达成K的建设值后才能够完成建设,当前级别的建设值溢出后不会影响到下一级的建设。小Hi可以产出的重金属资源按照精炼程度分为M级,根据开采的数量原创 2017-02-15 22:55:41 · 472 阅读 · 0 评论 -
qduoj 142 ycb的ACM进阶之路 二进制优化多重背包
题目链接关于多重背包以前做过几道水题,无非问法就是n个物品,每件物品有k件,价值v,重量w,给你一个容量为M的背包求最大价值之类的. 关于这类题目的话,01背包是所有背包问题的精髓,大部分问题都可以向01背包去转化,当然多重背包也不例外,时间复杂度比较高的一种做法是:将这n*k个物品全部看成每一个物品,这样就转化成了01背包,O(n*k*M)还可以将完全背包问题的方程略微一改即原创 2017-05-25 15:27:17 · 450 阅读 · 0 评论 -
HDU - 1028 Ignatius and the Princess III 生成函数+dp+完全背包
题目链接题意:基本整数划分问题思路: 第一次接触生成函数问题,这个题目就是一个基础的生成函数问题. 我们构造生成函数为 (1+x+x^2+x^3....)(1+x^2+x^4+....).....(1+x^n) 用x来表示数,指数表示数的大小 解得x^n的系数即为所求.#include#define Ri(a) scanf("原创 2017-07-12 19:23:43 · 1034 阅读 · 0 评论 -
hdu 1398 Square Coins 母函数+完全背包
题目链接思路:还是典型的母函数的问法,改改板子就能过.这个题目变成了平方.我们还是用x表示coin,可以构造这样一个母函数:(1+x+x^2+x^3.....)(1+x^4+x^8+...)(1+x^9+x^18+.....).....注意到这里是的指数和第i个表达式是平方的关系,所以我们将板子对应的改成i*i#include#define Ri(a)原创 2017-07-12 22:13:33 · 691 阅读 · 0 评论 -
UESTC 929 Dart game 完全背包
题目链接题意:也是类似于整数划分的问题,但是要求最后一个是2的倍数.思路: 最近刚好遇到自己在搞生成函数解决整数划分类的问题,但是这个题没找到构造,而且1e3,n3的复杂度肯定不行.我们在做整数划分的时候就知道,也可以用背包来解决这类的问题. 那么对于这个题我们就跑两次背包,一次对1倍2倍3倍的都跑一下,然后在只对1 3 的跑一次原创 2017-07-14 14:30:50 · 321 阅读 · 0 评论 -
hdu 6140 Hybrid Crystals 阅读题 OR bitset 优化01背包
题目连接题意:确实比较坑,题中给出的信息保证了凑出的数连续,但是我一直以为没什么用也没发现这个....然后就发现01背包肯定T了啊,那我就bitset优化一下吧.第一次写bitset,没办法 xjb搞搞吧,然后就一直T.这里bitset优化的时间复杂度大致是n*k/64 或者/32 吧 这个不太清楚.如果这个是个搜索我肯定就想到了这种剪枝...但是没想到...这样优化原创 2017-08-17 20:16:46 · 830 阅读 · 0 评论 -
百度之星资格赛1003 完全背包
题目链接百度之星资格赛1003观察到n为1e5,a为1000,b为10。也就是说会有重复的,所以预处理出打掉所有的ai和bi的花费,最后求和即可.完全背包 /* 百度之星资格赛1003 观察到n为1e5,a为1000,b为10。也就是说会有重复的,所以预处理出打掉所有的ai和bi的花费,最后求和即可. 完全背包 */ #include#includ原创 2017-08-15 01:34:10 · 451 阅读 · 0 评论 -
百度之星资格赛1004 01背包+记录路径套路
题目链接/* 百度之星资格赛1004 01背包套路题.这个题目是一个01背包+记录路径的题目. 关于记录路径的套路题,一般开一个book标记一下,book[i][j]表示容量为j时放入了第i个物品. 由于我们从前往后将物品装入背包并维护最大值,所以我们看背包中装入哪些物品时从后往前, 因为前面的物品已经有一个价值了,如果后面的物品能放进去那么一定是使答案变得更优了,那么我们就原创 2017-08-15 01:36:41 · 356 阅读 · 0 评论 -
HDU - 6125 Free from square 分组背包+状态压缩
题目链接题意:从1~n中任意取1~K个数(同一个数不能用多次),这些数的乘积不能被任意一个数的平方整除(除了 1 ),求有多少种取法?思路:可以知道不能被任意一个平方数整除,就说明选取的每个数都不能含有相同的质因子,否则不满足题意. 也就是含有相同质因子的数是互斥的,那么这种情况下我们可以想到分组背包,也就是按照质因子分组原创 2017-09-04 00:57:55 · 454 阅读 · 0 评论 -
CodeForces - 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses 分组背包
点击打开链接裸地分组背包,用并查集维护分组,并把该组的和也加进去就好了,就当贴个模板了#include#define mk make_pair #define pb push_back using namespace std;typedef long long ll;const int mod=1e9+7;const int maxn=1e3+5;ll dp[max原创 2017-09-14 23:46:36 · 392 阅读 · 0 评论 -
51nod 1406 与查询 类背包dp
题意:有n个整数。输出他之中和x相与之后结果为x的有多少个。x从0到10610^6思路:这题dp的思路很巧妙,分析一下题目,很容易想到,若已经求出一个数x的合法结果数,那么对于x位数上的子集来说,x的结果对他们也同样适用,例如,能和x=10110进行与运算能得到x的数,和x的子集y=10100进行与运算也一定能得到y。这样就能有一个大概的思路,设dp[x]为n个数中和x进行与运算能得到x的数的个数,转载 2017-10-24 18:58:01 · 470 阅读 · 0 评论 -
蓝桥杯 金明的预算方案 有依赖的背包
题目链接参考:http://www.cnblogs.com/wuyiqi/archive/2011/12/13/2285910.html思路:很明显,这道题也是一个有依赖的背包问题,关键是怎么去求解。这道题在背包九讲中特别提到了.还要注意,附件不再有从属于自己的附件,暗示了这种依赖关系只有一层,没有形成一棵树,是最简单的依赖背包这个问题由NOIP2006金明的预算方原创 2017-05-02 21:55:52 · 596 阅读 · 0 评论 -
hdu 3449 consumer 有依赖的背包问题
题目链接题意: 给你一些物品,每个物品有自己的价值和花费,每个物品都对应一个箱子,每个箱子有价钱,买这个物品必须买相应的箱子,给你一个价钱,问最多可以获得多少价值。思路;这道题是一个基础的有依赖的背包问题,也很明显,要想买某个物品,则其对应的箱子必须要买才可以.那么每个箱子是一个主件,每个箱子对应的这些物品为附件.根据背包九讲当中所讲述的,先对每个主件转载 2017-05-02 21:27:39 · 1044 阅读 · 0 评论 -
hihocoder #1043 完全背包
描述且说之前的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了!等等,这段故事为何似曾相识?这就要从平行宇宙理论说起了………总而言之,在另一个宇宙中,小Ho面临的问题发生了细微的变化!小Ho现在手上有M张奖券,而奖品区有N种奖品,分别标号为1到N,其中第i种奖品需要need(i)张奖券进行兑换,并且可以兑换无数次,为了使得辛苦得到的奖券不白白原创 2017-02-15 21:34:38 · 450 阅读 · 0 评论 -
hihocoder #1038 01背包 一维数组实现
且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了!小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要need(i)张奖券进行兑换,同时也只能兑换一次,为了使得辛苦得到的奖券不白白浪费,小Ho给每件奖品都评了分,其中第i件奖品的评分值为value(i),表示他对这件奖品的喜好值。现在他想知道,凭借他手上的原创 2017-02-01 20:33:41 · 477 阅读 · 0 评论 -
hdu 2546 饭卡 01背包
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。 某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。 Input多组数据。对于每组数据: 第一行为原创 2017-01-31 22:17:51 · 418 阅读 · 0 评论 -
D - Free Market CodeForces - 365D 背包求状态数+贪心 好题!
John Doe has recently found a "Free Market" in his city — that is the place where you can exchange some of your possessions for other things for free.John knows that his city has n items in total (e原创 2017-03-03 20:11:13 · 721 阅读 · 0 评论 -
完全背包总结
完全背包问题:题目 有N种物品和一个容量为V的背包。第i种物品有若干件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路:这个问题和我们刚解决的01背包问题很像,不同的是该问题中的物品每一件有若干件,而01背包中的每一件物品只有一件.动态规划(DP):原创 2017-02-15 21:23:06 · 6822 阅读 · 8 评论 -
01背包总结
题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。思路:这是最基本的01背包问题,之所以称之为01背包问题是指对于每个物品都只有放和不放两种状态,对应的0 1 表示 首先我们说一下状态转移方程,最普通的二维数组写法 dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]) dp[i原创 2017-01-31 22:09:45 · 469 阅读 · 0 评论 -
CodeForces - 366C Dima and Salad 01背包变形 好题!
题目连接:https://vjudge.net/contest/153156#problem/D题意:给出n个物品,有两个属性,问最后第一个属性的总和是第二个属性的k倍的时候,第一个属性最大是多少。思路:本来背包做的就不多,这个题让我深度认识了背包对于这个题由于暴力的情况太多,所以就开始往dp靠拢....我们发现每个物品只有一件,又让求最大值... 很像01背包啊这个题原创 2017-03-08 20:44:48 · 563 阅读 · 2 评论 -
L3-001. 凑零钱 01背包 满包问题+记录路径
L3-001. 凑零钱时间限制200 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能原创 2017-03-27 18:21:46 · 2178 阅读 · 1 评论 -
ZOJ 3956 Course Selection System 01背包变形
题目链接 题意:给你n个hi, ci,问你怎样拿才能让你 使上面式子最大。 思路:根据上面的式子我们可知,对于一个C值当hi越大,则上面的式子才可能更大一些,又因为题目中C的值很小最多50000,所以我们可以以C为背包容量 c[i]为体积h为价值进行01背包,然后维护一下最大值.真的是很巧妙的问法,当时有想过dp,想到了背包可是没有明确怎么背,,,哎 orz#i原创 2017-04-13 00:19:48 · 796 阅读 · 0 评论 -
hihocoder 1285 智力竞赛 dp 类多重背包问题
题目连接 思路:这个题算是一个类多重背包的问题吧,dp[i][j],表示第i关时回答了j道题至少答对了几道题目;那么对于每一关的积分a[i]我们可以求出所要答对问题的最大值,然后在m道题的范围内枚举答对的次数,用答错题x来补剩余的分数,然后维护这个最小值.#include#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld原创 2017-04-17 20:24:39 · 610 阅读 · 0 评论 -
历届真题 包子凑数 完全背包
传送门思路:首先考虑什么情况下是INF,即当所有的包子Ai,都不互质时那么就是INF,否则一定会凑到一定程度时后面的包子全都能凑出。在考虑题目中说所有的包子有无限笼,可以考虑到本题是一个完全背包,每个Ai为物品的体积。观察数据发现N为100,Ai最多为100,那么背包的容量设置为10000大一些即可了,如果不放心可以100000左右,然后统计所有凑不出的即可.#include<bits/st...原创 2018-03-06 20:42:00 · 3485 阅读 · 4 评论