![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后缀数组
Max_1_
这个作者很懒,什么都没留下…
展开
-
spoj Distinct Substrings&&hdoj5769 Substrings(后缀数组求不同子串个数)
spoj 题目大意:给一个字符串s,输出其不同子串的个数。|s|<=50000 思路分析:直接暴力枚举子串去重 n^3直接爆。后缀数组可求height数组,然后第sa[i]个后缀包含的不同子串为n-height[i]-sa [i],遍历一遍叠加即可,求后缀数组为nlog(n).代码: #include<iostream> #...原创 2018-07-10 21:45:33 · 156 阅读 · 0 评论 -
poj3261
题目大意:一个数组A,输出最长出现次数不小于k的子串(可交叉重叠)长度。A[i]<=1000000,n<=20000思路分析:后缀数组。。。。离散下数组(不离散也可),二分长度,判断出现次数,代码: #include<iostream> #include<string.h> #include<stdio.h> #include<math....原创 2018-07-10 22:00:00 · 304 阅读 · 0 评论 -
UVA 760 DNA Sequencing
题目大意:给两个DNA序列,求这两个序列的最长公共子串,按字典序输出,长度N<=300 可以直接用O(n^3)的暴力过。用后缀数组时间复杂度为O(nlogn)。。 先遍历height数组求出最大长度,然后再扫一遍height数组,记录最长子串的起始位置。 #include<iostream> #include<stdio.h> #include<stri...原创 2019-03-22 13:24:47 · 866 阅读 · 0 评论 -
poj1226 Substrings
题目大意:给n个字符串,求最长字符串长度,满足该字符串或其反转是这n个字符串的子串。 后缀数组。。将这n个字符串反转后拼接,就是求n个串的最长公共子串啦。 #include<iostream> #include<stdio.h> #include<string.h> #include<set> #include<vector> us...原创 2019-03-22 13:40:21 · 146 阅读 · 0 评论 -
poj3294 Life Forms
题目大意:给n个字符串,求最大长度的字符串,使其在一半以上的字符串中出现过,按字典序输出 后缀数组。。。二分最大长度,再按sa数组的顺序记录不同最长字符串出现的位置。 代码: #include<iostream> #include<stdio.h> #include<string.h> #include<set> #include<...原创 2019-03-22 13:59:52 · 320 阅读 · 0 评论