随笔分类 - 最长公共子序列
摘要:我发现我一直理解错题意了,这里的子序列指的是连续子序列,怪不得我写的LCS一直WA顺便复习一下并查集 1 //#define LOCAL 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const...
阅读全文
摘要:求最短公共祖先,是最长公共子序列的变形。在DP的同时记录下路径,然后递归回去输出即可。如果碰到公共的,只输出一次。以第一个样例为例:图中数字是最大公共子段的长度,下标代表路径。带下划线的是递归时所走的路径。 1 //#define LOCAL 2 #include 3 #include 4 #i...
阅读全文
摘要:题目就是给一个字符串问最少插入多少个字符能让原字符串变为回文字符串。算法:用原串的长度减去原串与翻转后的串的最大公共字串的长度,就是所求答案。 1 //#define LOCAL 2 #include 3 #include 4 #include 5 #include 6 using name...
阅读全文
摘要:最简单最基本的最长公共子序列的题目。吐槽一下为何没有给数据范围。。 1 //#define LOCAL 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int maxn = 1010;...
阅读全文
摘要:最长公共子序列的变形题目大意:给出两个基因序列,求这两个序列的最大相似度。题目中的表格给出了两两脱氧核苷酸的相似度。状态转移方程为:dp[i][j] = max(dp[i-1][j]+Similarity(s1[i], '-'), dp[i][j-1]+Similarity(s2[...
阅读全文
摘要:子序列就是子序列中的元素是母序列的子集,且子序列中元素的相对顺序和母序列相同。题目要求便是寻找两个字符串的最长公共子序列。dp[i][j]表示字符串s1左i个字符和s2左j个字符的公共子序列的最大长度。注意s1第i个字符为s1[i-1]于是有递推公式:对于abcfbc和abfcab两个字符串,求公共...
阅读全文