题目链接 题意:给两个长度不超过1e5的字符串,问两个字符串的连续公共子串最大长度为多少? 思路:两个字符串连接之后直接后缀数组+LCP,在height中找出max同时满足一左一右即可; ...
分类:
编程语言 时间:
2016-04-11 01:44:34
阅读次数:
265
详细解析LCS:传送通道 重点: 动态规划算法分以下4个步骤: 解决LCS问题,你要求三个方面的东西:1、LCS(Xm-1,Yn-1)+1;2、LCS(Xm-1,Y),LCS(X,Yn-1);3、max{LCS(Xm-1,Y),LCS(X,Yn-1)}。 show me the code: uva, ...
分类:
其他好文 时间:
2016-04-04 01:24:28
阅读次数:
271
LCS(最长公共子串 longest common subsequence)一般都会采用动态规划的算法来实现,算法的时间复杂度大概是O(x2), 另外需要一个x2的额外空间, 这个算法这里我不做说明,给个讲得不错的教程地址 LCS教程 这边博文里我将给出一个不采用动态规划的算法,并且时间复杂度和动态
分类:
编程语言 时间:
2016-03-23 06:04:46
阅读次数:
279
大意是寻找两个字符串中最短的公共子串,要求子串在两个串中都是唯一的。 造一个S#T的串,做后缀数组,从小到大枚举子串长度在height数组中扫描,如果某一个组中来自两个串的数量分别为1,就找到了答案。 1 #include <iostream> 2 #include <vector> 3 #incl
分类:
编程语言 时间:
2016-03-05 19:00:43
阅读次数:
313
给n个字符串,求最长的多于n/2个字符串的公共子串。 依然是二分判定+height分组。 把这n个字符串连接,中间用不同字符隔开,跑后缀数组计算出height; 二分要求的子串长度,判断是否满足:height分组,统计一个组不同的字符串个数是否大于n/2; 最后输出方案,根据二分得出的子串长度的结果
分类:
编程语言 时间:
2016-02-27 19:24:07
阅读次数:
221
求两个字符串的最长公共子串。 拼接两个字符串中间用特殊字符隔开,max(height[i])(2<=i<=len,suffix(sa[i])与suffix(sa[i-1])分别属于两个字符串的后缀)就是答案! 1 #include<cstdio> 2 #include<cstring> 3 #inc
分类:
编程语言 时间:
2016-02-22 22:04:16
阅读次数:
274
Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度。 任务: l 读入单词 l 计算最长公共子串的长度 l 输出结果 Input 文件的第一行是整数 n,1<=n<=5,表示单词的数量。接下来n行每行一个单词,只由小写字母组成,单词的长度至少为1,最大为2000。 Ou
分类:
其他好文 时间:
2016-02-19 12:32:42
阅读次数:
229
3160 最长公共子串 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。 输入描述 Input Description 读入两个字符串 输出描述 Output Description 输出最长公共子串的长度 样例输入 Sample Input yesho
分类:
其他好文 时间:
2016-02-18 21:17:04
阅读次数:
267
之前看过几次后缀自动机,然后因为人太蠢都没看懂。 最近重新填坑TAT。。。 BZOJ4032: [HEOI2015]最短不公共子串 建出后缀自动机和序列自动机,然后我们知道自动机上每一条路径都相当于一个子串(子序列),这样只要从根节点开始bfs一遍,找到A有而B没有的,那就是字典序最小的辣。 #in
分类:
其他好文 时间:
2016-02-05 01:41:51
阅读次数:
228