
动态规划——背包
文章平均质量分 81
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
ZeptoLab Code Rush 2015 C. Om Nom and Candies
1.题目描述:点击打开链接2.解题思路:本题是无限背包问题,根据重量的约束关系,直接暴力搜索。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#include#include#include#include#原创 2015-04-05 13:25:42 · 747 阅读 · 0 评论 -
HDU 5445 Food Problem (2015年长春赛区网络赛I题)
1.题目描述:点击打开链接2.解题思路:本题利用拆分法+01背包解决,通过题意可以知道,我们需要做2次多重背包,第一次计算出最小的面积,第二次计算出最小费用。然而由于200*100*100=2e6,背包的W值过大,肯定会TLE,因此需要将每个物品按照二进制拆分成logMi个,由于Mi最大只有100,因此拆分后的物品总量最多只有200*log(2,100)=2000个,而且拆分后的物品的能量最少原创 2015-09-15 23:47:40 · 889 阅读 · 0 评论 -
HDU 1712 ACboy needs your help
1.题目描述:点击打开链接2.解题思路:本题是分组背包的模板题,直接按照模板的步骤来即可:第一步遍历所有组,第二步从大到小遍历天数,第三步遍历第i组中所有的元素。3.代码:#include#include#include#include#include#include#include#include#include#include#include#include原创 2015-09-15 14:57:41 · 357 阅读 · 0 评论 -
HDU 5410 CRB and His Birthday (2015年多校比赛第10场)
1.题目描述:点击打开链接2.解题思路:本题是完全背包问题的一种变形。根据题意描述,每种物品的价值随着A[i]是线性变化的,但是并不随着B[i]线性变化,B[i]仅仅是在第一次挑选第i件物品是才算入,其他时候均不算入。因此,这里的状态要比普通的完全背包增加一个维度:是否是第一次选第i件物品,即用(i,j,flag)表示当前背包容量为j时,是否为第一次选第i件物品时的最大价值。那么不难得到如下状原创 2015-08-21 11:12:32 · 611 阅读 · 0 评论 -
HDU 2602 Bone Collector
1.题目描述:点击打开链接2.解题思路:本题就是经典的01背包问题,i逆序枚举的写法就不介绍了,主要说一下经典的错误写法。如果将输入的n个物品下标设为0~n-1,给出正确的写法和错误的写法。3.代码:(正确的写法)//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include原创 2015-08-19 23:38:41 · 574 阅读 · 0 评论 -
HDU 2955 Robberies
1.题目描述:点击打开链接2.解题思路:本题利用01背包解决。不过稍微运用了一下逆向思维。如果按照经典的思路,应该是概率作为容量,钱数作为价值,但是由于概率是浮点数,不能直接当做下标来使用,因此不妨换一个角度来考虑:概率作为价值,钱数作为容量。我们把所有的概率都转化为不被抓的概率,那么,本题实际上是求解不被抓的概率刚刚大于P的时候,最大的容量是多少。这样就可以用经典的01背包求解了。3.代原创 2015-08-19 22:48:50 · 633 阅读 · 0 评论 -
HDU 5000 Clone (2014年鞍山赛区网络赛D题)
1.题目描述:点击打开链接2.解题思路:本题利用动态规划解决。首先需要一点点的推导,即什么情况下两个克隆体可以共存,假设A,B两个克隆体可以共存,必然有一个属性A大于B,而另一个A小于B,直观上感觉:如果他们的属性值的和sum相同的话,就一定可以共存。这一点很容易证明。 第二点,两个sum值不相同的克隆体能共存吗?显然也是可以的。然而当所有的sum值相同的克隆体都组成一类的话,原创 2015-08-07 14:47:15 · 661 阅读 · 0 评论 -
#317 (div.2) D. Minimization
1.题目描述:点击打开链接2.解题思路:本题利用dp解决。不过首先要做一点分析。根据题意,我们需要在数组中,每相邻k个数要进行一次求和运算,那么,我们不妨把从下标i开始计算的数全部找出来,把他们看做一组,即下标为i,i+k,i+2k,...i+(n-1-i)/k*k这些数看做一个组的,我们发现,最多只能有k组(i只能从0取到k-1,再往后就会出现重复计算)。而且,只有n%k个组是包含n/k+1原创 2015-08-23 14:28:21 · 715 阅读 · 0 评论 -
#260 (div.1) A.Boredom
1.题目描述:点击打开链接2.解题思路:本题属于01背包型的dp问题。为了使得问题变得便与思考,我们可以顺序考虑每一个数字。事先用数组cnt统计输入的数字的个数。接下来,考虑数字i。如果选择删除它的话,由于是按顺序考虑的,因此所有的i-1都将被删去,那么分数为d[i]+i*cnt[i];如果不删除它,那么分数就是d[i-1]。只需要取较大者即可。3.代码:#define _CRT_SE原创 2015-05-13 22:18:47 · 626 阅读 · 0 评论 -
例题7-11 宝箱 UVa12325
1.题目描述:点击打开链接2.解题思路:本题是一道动态规划题,不过可以直接进行暴力搜索,和上次CF的ZeptoLab的C题完全一样,不再赘述。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#include#inc原创 2015-04-10 23:04:21 · 688 阅读 · 0 评论 -
POJ 2082 The Fewest Coins
1.题目描述:点击打开链接2.解题思路:本题是完全背包+多重背包的题目。根据题意,可以用dp[i]表示面值为i时候最少用到多少个硬币,根据题意不难发现,John给出硬币的情况是多重背包,而shopkeeper找零的情况是完全背包。这样,可以事先求出来相应的结果,最后扫描一遍求解最小值即可。不过这里有一个难点是如何确定枚举的上界。这里我根据感觉设置的是W+12000作为最大上界。3.代码:原创 2015-10-03 23:02:47 · 346 阅读 · 0 评论