随笔分类 -  DP

上一页 1 ··· 3 4 5 6 7
摘要:题目传送门题意:求单词的最长公共子序列,并要求打印路径分析:LCS 将单词看成一个点,dp[i][j] = dp[i-1][j-1] + 1 (s1[i] == s2[j]), dp[i][j] = max (dp[i-1][j], dp[i][j-1])代码:#include #include #... 阅读全文
posted @ 2015-05-05 15:51 Running_Time 阅读(170) 评论(0) 推荐(0)
摘要:题目传送门题意:中文题面分析:LIS模板题:n - 最长下降子序列 -> 最长上升子序列 贪心做法以后再补:)代码:#include #include #include #include #include using namespace std;const int MAXN = 1e4 + 10;... 阅读全文
posted @ 2015-05-05 14:43 Running_Time 阅读(177) 评论(0) 推荐(0)
摘要:题目传送门题意:LCIS(Longest Common Increasing Subsequence) 最长公共上升子序列分析:a[i] != b[j]: dp[i][j] = dp[i-1][j];a[i]==b[j]: dp[j]=max(dp[j],dp[k]); (1#include #in... 阅读全文
posted @ 2015-05-04 20:06 Running_Time 阅读(172) 评论(0) 推荐(0)
摘要:题目传送门 1 /* 2 递推DP:官方题解 3 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 4 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩下i − 1个人时的位置 5 ... 阅读全文
posted @ 2015-05-03 15:22 Running_Time 阅读(148) 评论(0) 推荐(0)
摘要:题目传送门题意:LIS最长递增子序列 O(nlogn)分析:设当前最长递增子序列为len,考虑元素a[i]; 若d[len]#include #include #include using namespace std;const int N = 1e5 + 10;const int INF = 0... 阅读全文
posted @ 2015-04-29 20:27 Running_Time 阅读(195) 评论(0) 推荐(0)
摘要:题目传送门题意:一个字符串要变成回文串至少要插入多少个字符分析:LCS,长度 - 原串和反串的最大相同长度就是要插入的个数。解释一下,当和反串相同时,在原串中已经是回文的部分了,那么减去LCS长度后剩下的多少个插入多少个一定就能使原串回文dp数组二维都开5000的话就会超内存,这里就用到了滚动数组,... 阅读全文
posted @ 2015-04-29 20:02 Running_Time 阅读(250) 评论(0) 推荐(0)
摘要:题目传送门题意:两个字符串结合起来,公共的字符只输出一次分析:LCS,记录每个字符的路径代码:/* LCS(记录路径)模板题: 用递归打印路径:)*/#include #include #include #include #include using namespace ... 阅读全文
posted @ 2015-04-29 19:58 Running_Time 阅读(239) 评论(0) 推荐(0)
摘要:题目传送门题意:找一条从顶部到底部的一条路径,往左下或右下走,使得经过的数字和最大。分析:递推的经典题目,自底向上递推。当状态保存在a[n][j]时可省去dp数组,空间可优化。代码1:/************************************************* Author ... 阅读全文
posted @ 2015-04-29 18:39 Running_Time 阅读(107) 评论(0) 推荐(0)
摘要:题目传送门 1 /* 2 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () 3 http://www.cnblogs.com/crazyapple/p/3315436.html 4 数位DP:http://blo... 阅读全文
posted @ 2015-04-19 20:36 Running_Time 阅读(233) 评论(0) 推荐(0)
摘要:题目传送门 1 /* 2 题意:已知丢失若干卡片后剩余的总体积,并知道原来所有卡片的各自的体积,问丢失的卡片的id 3 DP递推:首先从丢失的卡片的总体积考虑,dp[i] 代表体积为i的方案数,从dp[0] = 1递推,累加的条件是dp[j]上一个状态已经有方案, 4 ... 阅读全文
posted @ 2015-04-03 20:13 Running_Time 阅读(225) 评论(0) 推荐(0)
摘要:题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443 1 /* 2 题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对 3 DP:很巧妙的从i出发向两头扩展判断是否相同来找回文串 4 ... 阅读全文
posted @ 2015-04-01 20:18 Running_Time 阅读(225) 评论(0) 推荐(0)
摘要:题目传送门 1 /* 2 状态压缩DP:先处理硬性条件即不能种植的,然后处理左右不相邻的, 3 接着就是相邻两行查询所有可行的种数并累加 4 5 写错一个地方差错N久:) 6 详细解释:http://www.tuicool.com/articles/JV... 阅读全文
posted @ 2015-03-26 13:51 Running_Time 阅读(135) 评论(0) 推荐(0)
摘要:题目传送门 1 /* 2 题意:n*n的矩阵,放置k个king,要求king互相不能攻击,即一个king的8个方向都没有另外的king,求方案个数 3 状态压缩DP:dp[i][num[j]][s] 代表在第i行,放置num[j]个king,其状态为s时的方案数 4 ... 阅读全文
posted @ 2015-03-26 13:50 Running_Time 阅读(231) 评论(0) 推荐(0)
摘要:题目传送门 1 /* 2 题意:一个h*w的矩阵(1 8 #include 9 #include 10 #include 11 #include 12 #include 13 using namespace std;14 15 const int MAXN = 1e4 + 10;16 co... 阅读全文
posted @ 2015-03-26 13:47 Running_Time 阅读(141) 评论(0) 推荐(0)
摘要:题目传送门题意:输出两字符串的最长公共子序列长度分析:LCS(Longest Common Subsequence)裸题。状态转移方程:dp[i+1][j+1] = dp[i][j] + 1; (s[i] == t[i])dp[i+1][j+1] = max (dp[i][j+1], dp[i+1]... 阅读全文
posted @ 2015-03-23 19:29 Running_Time 阅读(182) 评论(0) 推荐(0)
摘要:题目传送门题意:LIS(Longest Increasing Subsequence)裸题分析:状态转移方程:dp[i] = max (dp[j]) + 1 (a[j] #include #include using namespace std;const int N = 1e4 + 10;con... 阅读全文
posted @ 2015-03-22 15:21 Running_Time 阅读(202) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7