只需要把两个串拼接起来,之后求一下后缀数组求可覆盖最长重复子串模板即可 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<string> using namespace std; ty ...
分类:
编程语言 时间:
2020-07-15 01:12:09
阅读次数:
72
POJ2774 Long Long Message 找两个串的 最长公共字串 对其中一个串$s$建$SAM$,然后我们如何找到最长公共字串,办法就是枚举$t$串所有的前缀,然后找各个前缀的最长能和$s$串匹配的后缀。 如果一个个跑需要$O(n^2)$,$SAM$可以来保存之前匹配的状态,假设现在匹配 ...
分类:
其他好文 时间:
2020-04-14 17:07:22
阅读次数:
58
"[poj2774] Long Long Message" Description The little cat is majoring in physics in the capital of Byterland. A piece of sad news comes to him these da ...
分类:
其他好文 时间:
2020-01-18 16:09:09
阅读次数:
78
Description 求两个字符串的最长公共子串。 Solution 把两个字符串拼起来,问题就转化为了求任意两个后缀的 $lcp$ 的最大长度。 显然这个最大长度是 $height_i$ 的值,$\text{SA}$ 求解即可。 需要注意的是,对于 $height_i$ 需要判断一下 $SA_i ...
分类:
编程语言 时间:
2020-01-06 23:04:17
阅读次数:
96
蒟蒻的第一道后缀数组的题目!! SA是个好东西,本题就是考察它的经典应用——求一个字符串里面两个后缀的最长公共前缀! 所以我们就可以考虑把两个字符串拼起来,然后查找两个后缀,使得他们的最长公共前缀最长。 然后就是板子了吧qwqwq(感觉SA的写法和网上很多人的不一样??不过原理还是一样的啦qwq) ...
分类:
其他好文 时间:
2019-01-07 22:34:29
阅读次数:
207
思路 求出height之后 只要相邻两个子串是本串不同的来更新就好 因为这样一定是最优啊、、取min显然越长越不好 代码 cpp include include include define FOR(i,a,b) for(int i=a;i=b; i) using namespace std; co ...
分类:
其他好文 时间:
2018-12-21 13:15:42
阅读次数:
206
Description 求两个串的最长连续公共字串 Solution 后缀数组入门题吧 把两个串连在一起,中间加一个分隔符,然后跑一遍后缀数组,得到 height 和 sa 一个 height[i] 对答案有贡献的充要条件是 sa[i] 和 sa[i 1] 分别在两个串中 Code cpp incl ...
分类:
其他好文 时间:
2018-12-04 21:12:22
阅读次数:
203
LCS2 - Longest Common Substring II 链接 题意: 求N(N<=10)个串的最长公共子串。 分析: poj2774上那道题,对一个串建立后缀自动机,另一个在上面匹配。 这道题是对多个串求。那么同样,让每个串在后缀自动机上匹配,然后记录在后缀自动机的每个节点上记录,当前 ...
分类:
其他好文 时间:
2018-07-19 16:19:25
阅读次数:
129
poj2774,codevs3160 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。 输入描述 ...
分类:
其他好文 时间:
2018-03-22 12:43:42
阅读次数:
156
http://poj.org/problem?id=3415 给定两个字符串A 和B,求长度不小于k 的公共子串的个数(可以相同)。 论文题,和上道题(POJ2774)类似,首先想到现将AB串合并,然后子串可以表示成字符串后缀的前缀,于是我们比较任意两个A后缀和B后缀,用height求出他们的公共子 ...
分类:
其他好文 时间:
2018-02-24 23:03:58
阅读次数:
247