两种方法:
第一种:将总数一半当做背包,用总数-2*最多能装的数目就是所求;
第二种:深搜;
zb的生日
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一...
分类:
其他好文 时间:
2014-07-27 23:37:39
阅读次数:
218
状态压缩 动态规划DP[111.....1]=1表示所有鱼都在的几率为10代表已经挂了的,1代表没挂;#include "stdio.h"#define max 10;i--){ int bit=bitcount(i); if(bit==1)continue; double p=2*dp[i]...
分类:
其他好文 时间:
2014-07-27 23:19:49
阅读次数:
316
状态压缩是一个很广的概念,在OI中也有很多的应用,当我们把他应用到动态规划中,可以用来精简状态,节约空间,也方便转移。最常见的就是用二进制来表是状态,利用各种位移运算,就可以实现\(O(1)\)的转移。状压DP适用于“窄棋盘”上的DP,否则状态太多无法存下。POJ1185炮兵阵地题意:给一个\(N ...
分类:
其他好文 时间:
2014-07-27 23:17:19
阅读次数:
391
1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 int m, t, n; 8 double dp[1005][40][40]; 9 double p[1005][40];10 double p1, p2;11 1...
分类:
其他好文 时间:
2014-07-27 22:44:29
阅读次数:
277
01背包问题动态规划应用acm1881毕业bg将必须离开的时间限制看作背包容量,先将他们由小到大排序,然后在排完序的数组中对每个实例都从它的时间限制开始(背包容量)到它的延长时间进行遍历; 1 #include 2 #include 3 #include 4 using namespace std;...
分类:
其他好文 时间:
2014-07-27 22:38:39
阅读次数:
210
前言: 分治法是将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解。 动态规划(Dynamic Programming)是通过组合子问题的解而解决整个问题。它适用于子问题不是独立的情况,也就是各个子问题包含公共的子问题。在这种情况下,若用分治法会做许多不必要的工.....
分类:
其他好文 时间:
2014-07-27 10:26:42
阅读次数:
353
上一篇总结了三种基本的背包类型,但做题时很少让直接赤裸裸的求某一种背包。由它们延伸出来的问题可能更加重要。
但只要理解了基本的三种背包,对于更加复杂的问题的理解也不是很难。
仍然参考背包九讲的内容。
混合三种背包
将三种背包混合起来,就是说有的物品只有一件,有的物品有无限件,而有的物品有n[i]件。求把物品装入背包不超过背包容量的最大价值。
听起来很高大上,其实把它们分别...
分类:
其他好文 时间:
2014-07-26 17:15:52
阅读次数:
228
f(n) 为n个格子的方法数目,
假设第n-1个格子的颜色跟第1个相同,那f(n) = 2×f(n-2); 因为第n-1个格子颜色已确定,第n个格子可以涂的颜色有两种,故为2×f(n-2);
第n-1个格子的颜色跟第1个不相同时,f(n) = f(n-1);
所以动态方程为f(n) = f(n-1)+2×f(n-2);
不容易系列之(3)—— LELE的RPG难题
Time ...
分类:
其他好文 时间:
2014-07-26 15:14:00
阅读次数:
198
dp果然不是好学的。。。
第n个,即2*n时,可由第n-1个的竖直排列再加一个,和第n-2个中横着排两个
所以f(n) = 1×f(n-1) + 1×f(n-2);
骨牌铺方格
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s...
分类:
其他好文 时间:
2014-07-26 15:13:40
阅读次数:
213