【题目分析】 用height数组RMQ的性质去求最长的公共子串。 要求sa[i]和sa[i-1]必须在两个串中,然后取height的MAX。 利用中间的字符来连接两个字符串的思想很巧妙,记得最后还需要空一个位置避免冲突。 【代码】 ...
分类:
编程语言 时间:
2017-01-03 23:59:30
阅读次数:
480
Description 在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之。 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是。 一个串的“子序列”指的是它的可以不连续的一段,例如bde是abcdef的子串,但bdd不是。 下面,给两个小写字母串A ...
分类:
其他好文 时间:
2016-12-14 21:13:42
阅读次数:
159
字符串的匹配 题目描述 相信大家都做许多的字符串匹配问题了,一天,503集训室的俊哥突然想出了新点子。现在给你两个字符串a,b求最长公共子串。对于是字符串匹配大师的你来说,这个再简单不过了。但是,如果现在你有k次修改机会,每次你都可以选择其中某个串的某个位置。将其修改成任意字符。 你需要合理使用这k ...
分类:
其他好文 时间:
2016-11-28 00:11:26
阅读次数:
245
在“文本比较算法Ⅰ——LD算法”中介绍了基于编辑距离的文本比较算法——LD算法。 本文介绍基于最长公共子串的文本比较算法——Needleman/Wunsch算法。 还是以实例说明:字符串A=kitten,字符串B=sitting 那他们的最长公共子串为ittn(注:最长公共子串不需要连续出现,但一定 ...
分类:
编程语言 时间:
2016-11-23 23:01:31
阅读次数:
305
【题目链接】 http://poj.org/problem?id=3450 【题目大意】 求k个字符串的最长公共子串,如果有多个答案,则输出字典序最小的。 【题解】 我们对第一个串的每一个后缀和其余所有串做kmp,取匹配最小值的最大值就是答案。 【代码】 ...
分类:
其他好文 时间:
2016-11-16 14:03:46
阅读次数:
187
【题目链接】 http://www.spoj.com/problems/LCS2/ 【题目大意】 求n个串的最长公共子串 【题解】 对一个串建立后缀自动机,剩余的串在上面跑,保存匹配每个状态的最小值, 取最小值中的最大值即可。由于跑的地方只记录了匹配结尾的状态, 所以还需要更新parent树上的状态 ...
分类:
其他好文 时间:
2016-11-16 01:53:26
阅读次数:
244
【题目链接】 http://codeforces.com/problemset/problem/427/D 【题目大意】 给出一个两个字符串,求出最短且在两个字符串中唯一的公共子串。 【题解】 以原字符串的两倍建立自动机,按字典序在parent树上搜索, 得到的第一个长度为n的字符串就是答案。 【代 ...
分类:
其他好文 时间:
2016-11-16 01:46:58
阅读次数:
205
【题目链接】 http://poj.org/problem?id=2774 【题目大意】 求最长公共子串 【题解】 将两个串中间嵌一个字符相连,求一遍后缀数组 如果排名相邻的两个后缀的开端是分属于两个串的, 那么他们的最长公共前缀就可以用来更新答案 【代码】 ...
分类:
编程语言 时间:
2016-11-16 01:43:33
阅读次数:
147
【题目链接】 http://poj.org/problem?id=3415 【题目大意】 求出两个字符串长度大于k的公共子串的数目。 【题解】 首先,很容易想到O(n2)的算法,将A串和B串加拼接符相连, 做一遍后缀数组,把分别属于A和B的所有后缀匹配,LCP-k+1就是对答案的贡献, 但是在这个基 ...
分类:
编程语言 时间:
2016-11-16 01:31:42
阅读次数:
191
【题目链接】 http://poj.org/problem?id=3080 【题目大意】 求k个串的最长公共子串,如果存在多个则输出字典序最小,如果长度小于3则判断查找失败。 【题解】 将所有字符串通过拼接符拼成一个串,做一遍后缀数组,二分答案,对于二分所得值,将h数组大于这个值的相邻元素分为一组, ...
分类:
编程语言 时间:
2016-11-15 23:33:17
阅读次数:
287