初看01背包,果断TLE。是因为n和C都比较大。但是vi和ci却很小,转化为多重背包。 1 #include 2 #include 3 4 int map[15][15]; 5 int dp[10005]; 6 int n, C; 7 8 int max(int a, int b) { 9 ...
分类:
其他好文 时间:
2014-09-18 18:17:44
阅读次数:
220
Maze
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)
Total Submission(s): 1677 Accepted Submission(s): 638
Special Judge
Problem Description
When wake up,...
分类:
其他好文 时间:
2014-09-18 16:34:14
阅读次数:
256
Walk Through Squares
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 944 Accepted Submission(s): 277
Problem Description
On the beam...
分类:
其他好文 时间:
2014-09-18 14:51:34
阅读次数:
316
Rescue the Rabbit
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1412 Accepted Submission(s): 403
Problem Description
Dr. X is a biol...
分类:
其他好文 时间:
2014-09-18 14:50:54
阅读次数:
245
题目链接
题意:给出一个序列,长度为n,表示有n个x(节点),可以添加任意括号,问说形成的串为非二叉表达式的有多少个。
思路:用总数减去二叉表达式的数量。二叉表达式可以用Catalan数求解,至于总数的话,用dp求解。dp[i][0]表示在第i个位置可以被拆分成两个子树,dp[i][1]表示有一个子树。
代码:
#include
#include
#includ...
分类:
其他好文 时间:
2014-09-18 11:28:53
阅读次数:
161
题目: uva 116 Unidirectional TSP
题意:给出一个矩阵,当前的格子值为后面三个方向的格子最小值和当前的和,就第一列的最小值并打印路径(相同则去字典序最小的)、
分析:刚开始想错了,从前往后走,这样的话没有办法控制字典序最小,用dfs标记了一下超时了。
其实从后往前走就好了。以后一定先想清楚顺序,然后dp的时候选择字典序最小的,用father数据记录即...
分类:
其他好文 时间:
2014-09-18 09:49:33
阅读次数:
163
题意:
每个克隆个体有n个属性 如果对于A、B两个个体 A的n个属性均不低于B的n个属性 那么B会被淘汰 问最多能有多少个体同时存活
思路:
根据数据大小猜一下是n^2的复杂度 往DP方面考虑一下
DP需要一个想法的支持 就是最优的那个集合中的元素的n个属性的和一定是一样的 为什么呢? 想象一下 假设最优的集合的属性和是5 这时你选过来一个和为6或者4的元素 那么至少...
分类:
其他好文 时间:
2014-09-18 09:49:03
阅读次数:
216
http://cpp.zjut.edu.cn/ShowProblem.aspx?ShowID=1423
设dp[i]表示在i点时到达终点要走的期望步数,那么dp[i] = ∑1/m*dp[j] + 1,j是与i相连的点,m是与i相邻的点数,建立方程组求解。重要的一点是先判断DK到达不了的点,需要bfs预处理一下进行离散化,再建立方程组。
#include
#include
...
分类:
其他好文 时间:
2014-09-18 00:51:43
阅读次数:
253
概率DP
dp[j][d] 表示不经过i点走d步到j的概率, dp[j][d]=sigma ( dp[k][d-1] * Probability )
ans = sigma ( dp[j][D] )
Walk
Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
...
分类:
其他好文 时间:
2014-09-17 23:23:13
阅读次数:
300
题目:找到一个序列中的两个连续段使得他们的和最大。
分析:dp,最大字段和。双向求最大字段和,枚举结束点找到加和最大值。
说明:与合唱队形类似。(同poj2593)(2011-09-24 02:09)
#include
#include
int data[ 50005 ];
int asum[ 50005 ];
int bsum[ 50005 ];
void msum( int *D...
分类:
其他好文 时间:
2014-09-17 21:53:22
阅读次数:
233