=======动态规划======
文章平均质量分 64
___Evan
这个作者很懒,什么都没留下…
展开
-
POJ-1952 最长下降子序列 + 方案数
/*求最长下降子序列 简单 就是求方案数比较麻烦点 看了别人的解题报考才懂也对最长**子序列的理解更深一步*/#include#include#includeusing namespace std;const int maxn = 5005;int n;int price[maxn],len[maxn],count[maxn]; //len[i]记录到i最长下降序列原创 2013-10-10 18:58:33 · 595 阅读 · 0 评论 -
Uva-10626 Buying Coke DP+记忆化搜索
#include #include #include #include#include #include #include #include using namespace std;const int maxn = 106;const int inf = 1<<30;int n;int dp[705][105][55];int Dp( int a,int b,int c,原创 2014-05-04 19:04:59 · 442 阅读 · 0 评论 -
HDU - 1421 搬寝室(经典DP)
http://acm.hdu.edu.cn/showproblem.php?pid=1421状态: dp[i][j] 表示i件物品搬j组转移方程: dp[i][j] = Min( dp[i-2][j-1] + qwe(w[i] - w[i-1]),dp[i-1][j] );#include#include#include#includ原创 2013-10-13 15:38:48 · 707 阅读 · 0 评论 -
Uva-111 History Grading 裸最长公共子序列
题目链接#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 30;const int inf = 1<<30;int n;int str1[maxn],str2[maxn],dp[maxn][ma原创 2014-04-02 22:58:22 · 449 阅读 · 0 评论 -
Uva-116 Unidirectional TSP DP
#include #include #include#include #include using namespace std;const int maxn = 105;const int inf = 1<<30;int n,m;int dp[maxn][maxn],Path[maxn][maxn];int Min( int a,int b,int c ){ a = a<b原创 2014-04-23 18:09:33 · 543 阅读 · 0 评论 -
Uva-825 Walking on the Safe Side 水DP
题目链接简单DP就输入比较麻烦点 #include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 1030;const int inf = 1<<30;int n,m;int dp[maxn][maxn],vis原创 2014-04-03 18:19:27 · 422 阅读 · 0 评论 -
Uva-437 The Tower of Babylon DP
题目链接原创 2014-04-22 10:38:11 · 402 阅读 · 0 评论 -
Uva-10131 Is Bigger Smarter?
s#include #include #include#include #include using namespace std;const int maxn = 1005;const int inf = 1<<30;int dp[maxn],Path[maxn];struct node{ int id,w,s;}ele[maxn];bool cmp( node a原创 2014-04-23 10:15:24 · 393 阅读 · 0 评论 -
HDU-2686 Matrix 双线程DP
#include #include #include #include#include #include #include using namespace std;const int maxn = 35;const int inf = 1<<30;int n;int map[maxn][maxn],dp[maxn][maxn][maxn][maxn];bool vis[ma原创 2014-05-15 11:41:20 · 434 阅读 · 0 评论 -
Vijos P1493 传纸条 双线程DP
#include #include #include #include#include #include #include using namespace std;const int maxn = 55;const int inf = 1<<30;int n,m;int map[maxn][maxn],dp[maxn][maxn][maxn][maxn];int Max(原创 2014-05-15 10:41:58 · 531 阅读 · 0 评论 -
2014蓝桥杯本科B组 地宫取数 DP
#include #include #include #include#include #include #include using namespace std;const int maxn = 55;const int inf = 1<<30;const int mod = 1000000007;int n,m,K;int map[maxn][maxn],dp[maxn原创 2014-05-04 20:37:05 · 739 阅读 · 0 评论 -
POJ-1946 Cow Cycling DP
#include #include #include #include #include#include #include #include using namespace std;const int maxn = 105;const int inf = 1<<30;int N,D,E;int dp[25][maxn][maxn]; //Dp[i][j][k] 表示i头牛原创 2014-05-16 17:22:17 · 479 阅读 · 0 评论 -
Uva-10069 Distinct Subsequences DP
#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 155;const int inf = 1<<29;const int mod = 100000000;int n;char Str[maxn*maxn原创 2014-04-10 22:59:58 · 387 阅读 · 0 评论 -
hdu-1227 Fast Food DP
#include #include #include#include #include using namespace std;const int maxn = 205;const int inf = 1<<30;typedef __int64 LL;int n,m;int pos[maxn],dis[maxn][maxn],dp[35][maxn];//dp[i][j]代表前原创 2014-04-27 17:00:10 · 359 阅读 · 0 评论 -
Lightoj 1038 概率DP
题意:给一个数,用这个数的约数(包括自己)去除这个数,直到得数为1,求除的次数的期望。#include #include #include #include #include#include #include #include using namespace std;const int maxn = 100005;const int inf = 1<<30;const原创 2014-05-18 20:14:54 · 409 阅读 · 0 评论 -
HDU-1500 Chopsticks DP
与上一题搬寝室基本一样 多点条件而已!状态: dp[i][j]表示前i个取j组转移方程: dp[i][j] = Min( dp[i-2][j-1] + (w[i] - w[i-1])*(w[i] - w[i-1]),dp[i-1][j] ); dp[i%3][j] = Min( dp[(i-2)%3][j-1] + (w[i] - w[i原创 2013-10-13 19:16:20 · 603 阅读 · 0 评论 -
HDU-1501 Zipper 简单DP
#include #include #include#include #include using namespace std;const int maxn = 215;const int inf = 1<<30;typedef __int64 LL;int len1,len2;bool dp[maxn][maxn];char str1[maxn],str2[maxn],st原创 2014-04-28 19:02:58 · 397 阅读 · 0 评论 -
poj-1417 True Liars 并查集+DP
#include "stdio.h"#include "map"#include "queue"#include "iostream"#include "functional"#include "math.h"#include "algorithm"using namespace std;const int maxn = 1005;const int mod = 10000000原创 2014-07-27 14:07:40 · 483 阅读 · 0 评论 -
HDU - 1080 Human Gene Functions DP
http://acm.hdu.edu.cn/showproblem.php?pid=1080题意: 给定两个字符串 s1 和 s2 ,在两个串中都可以插入空格,使两个串的长度最后相等,然后开始匹配,怎样插入空格由匹配规则得到的值最大。状态转移方程: dp[i][j] = Max( dp[i-1][j] + val(str1[i],'-原创 2013-10-12 11:23:12 · 414 阅读 · 0 评论 -
HDU-2955 Robberies 01背包 + 概率
题目链接#include #include #include #include#include #include #include #include using namespace std;const int maxn = 106;const int inf = 1<<30;typedef __int64 LL;int n,V;float P,dp[maxn*原创 2014-04-29 22:02:51 · 389 阅读 · 0 评论 -
HDU-1025 裸最长递增子序列
题意:河两岸各有n个城市 每个城市可以向对岸建路 建的路不能交叉 问最多可以建多少条路思路:可以把模型转化为最长递增子序列河的一岸作为序列的下标 另一岸作为序列的值 不相交既为 城市i前面的城市不能建比城市i连接的城市后 由于数据比较大 n坑:深坑... 输出要分单复数 只能建一条路的时候要输出road而复数要输出roads ..... 不看讨论区 坑原创 2013-10-10 22:38:51 · 540 阅读 · 0 评论 -
HDU - 1466 计算直线的交点数
http://acm.hdu.edu.cn/showproblem.php?pid=1466看题目第一反应几何题... 结果跟我说用DP = =!果断没想法看别人报告才懂 DP真是博大精深 采用数组dp[i][j]。若dp[i][j]==1,则说明放i条直线有j个交点,则只需要把dp[n][i]从i=0到i=190扫一遍,因为20条直线最多有190个交点。原创 2013-10-14 13:06:09 · 600 阅读 · 0 评论 -
HDU - 2577 How to Type
http://acm.hdu.edu.cn/showproblem.php?pid=2577对于每个字母之前的字母有两种状态 1.tab开启 2.tab没有开启,有数组分别记录两种状态下的最短时间,接下来状态转移方程:0代表没开,1代表开了,对当前字母分类小写字母: timer[i+1][0]=min(timer[i][0]+1,tim原创 2013-10-17 17:54:38 · 476 阅读 · 0 评论 -
HDU-1494 跑跑卡丁车 DP
http://acm.hdu.edu.cn/showproblem.php?pid=状态 dp[i][j] 表示第i段能量为j的时间#include #include #include using namespace std;const int maxn = 105;const int inf = 1<<30;int n,m;int a[maxn],b[max原创 2013-10-17 18:00:26 · 526 阅读 · 0 评论 -
HDU-1513 Palindrome LCS+滚动数组
http://acm.hdu.edu.cn/showproblem.php?pid=1513将原字符串倒置,然后与原字符串求最长公共子序列, 答案就是len-dp[len][len]。#include "stdio.h"#include "string.h"const int maxn = 510;int n;char str1[maxn],str2[maxn原创 2013-10-17 18:03:12 · 455 阅读 · 0 评论 -
HDU-1081 To The Max 二维最大子序列和
http://acm.hdu.edu.cn/showproblem.php?pid=1081把行压缩成一行 再一这行求最大子序列和 这样就把二维转化为一维#include #include #include using namespace std;const int maxn = 105;int n;int maxs;int map[maxn][maxn原创 2013-10-17 18:05:54 · 639 阅读 · 0 评论 -
HDU-3507 Print Article DP斜率优化
/*HDU 3507*/#include#include#include#includeusing namespace std;const int MAXN=500010;int dp[MAXN];int q[MAXN];//队列int sum[MAXN];int head,tail,n,m;// dp[i]= min{ dp[j]+原创 2013-10-22 10:38:22 · 430 阅读 · 0 评论 -
HDU-1513 Palindrome LCS+滚动数组
/*http://acm.hdu.edu.cn/showproblem.php?pid=1513将原字符串倒置,然后与原字符串求最长公共子序列, 答案就是len-dp[len][len]。*/#include "stdio.h"#include "string.h"const int maxn = 510;int n;char str1[maxn],str2[maxn];原创 2013-11-02 22:39:34 · 474 阅读 · 0 评论 -
hdu-1422 最长子序列和
#include #include #include using namespace std;const int maxn = 100005;int n;int cost[maxn];int main(){ //freopen( "data.in","r",stdin ); while( scanf("%d",&n) != EOF ) { int flag = 0,w原创 2013-11-02 22:41:27 · 523 阅读 · 0 评论 -
FAFU-1395 翻牌 DP
学习陈新大神代码 #include#include#include#include#include#includeusing namespace std;const int maxn = 1050;int n;int dp[maxn*12],p[maxn*6]; //dp[i]bool cmp( int a,int b ){ return a > b;}原创 2014-01-06 15:28:06 · 477 阅读 · 0 评论 -
POJ-3267 The Cow Lexicon 简单DP
题意就是给出一个主串,和一本字典,问最少在主串删除多少字母,可以使其匹配到字典的单词序列。PS:是匹配单词序列,而不是一个单词#include#include#include#includeusing namespace std;const int maxn = 605;int W,L;int dp[maxn],len[maxn];string str,word[m原创 2014-01-10 15:33:11 · 425 阅读 · 0 评论 -
HDU-1466 计算直线的交点数 DP
题目链接#include #include #include #include using namespace std;const int maxn = 5005;int n;int dp[25][200]; //dp[i][j] 表示i个点j个交点的状态存在与否void init(){ memset(dp,0,sizeof(dp));原创 2014-02-21 18:29:23 · 424 阅读 · 0 评论 -
POJ-2096 Collecting Bugs 简单概率DP
题意:一个软件有s个子系统,会产生n种bug。 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中。 求找到所有的n种bug,且每个子系统都找到bug,这样所要的天数的期望。 需要注意的是:bug的数量是无穷大的,所以发现一个bug,出现在某个子系统的概率是1/s, 属于某种类型的概率是1/n。 解法: dp原创 2014-02-23 16:17:33 · 474 阅读 · 0 评论 -
HDU - 1224 Free DIY Tour DP
Free DIY TourTime Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 4 Accepted Submission(s) : 2Problem DescriptionWeiwei is a software原创 2013-10-11 22:28:25 · 599 阅读 · 0 评论 -
HDU-3392 Pie DP
http://acm.hdu.edu.cn/showproblem.php?pid=3392题目意思是让输入N个男的身高M个女的身高让min(N,M)那一方全部配对完,求最小的差值总和注意题目条件 |n – m| 所以每个只要从i+1找到i+n-m就可以了#include "stdio.h"#include "string.h"#include "algorit原创 2013-10-17 17:48:41 · 632 阅读 · 0 评论 -
FAFU-1043 最大和谐子方阵 DP
题目链接#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 10005;const int inf = 1<<30;int n,m,len,num;int map[3][maxn],dp[3][maxn];原创 2014-02-26 19:36:09 · 551 阅读 · 0 评论 -
蓝桥杯 算法训练 K好数
问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数原创 2014-02-27 18:27:35 · 1155 阅读 · 0 评论 -
poj-2479 Maximum sum DP
#include #include #include #include #include #include #include using namespace std;typedef __int64 LL;const int maxn = 50005;const int inf = 2000000001;int n;int num[maxn],ld[maxn],rd[maxn原创 2014-09-03 09:40:29 · 405 阅读 · 0 评论