一道非常经典的题目 , 求至少在超过一半的字符串中出现过的最长子串 , 并且按字典序删除 , 方法有很多种 , 后缀数组也可以 , 在绝大多数的后缀数组题目中 , 都要用到二分和分段的思想 ,二分长度,然后依据长度k分段 , 分段即把height数组分成多段 , 使得每一段中 , 如果有多个字符串,...
分类:
其他好文 时间:
2014-11-19 22:09:11
阅读次数:
268
题目是要求一个字符串中第k小的子串 , 如果想到一个子串必定是一个后缀的前缀 , 那么就可以用后缀数组来解决了 , 后缀数组记录着有序的所有后缀 , 而且每个后缀的不重复的子串数是确定的 , 就是n-sa[i]-height[i] , 如果不理解这个公式, 可以自己对照所有后缀去用笔画 , 既然这个...
分类:
其他好文 时间:
2014-11-17 22:38:37
阅读次数:
239
关于字符串的AC自动机,KMP,Trie树,后缀数组。
KMP是基础。当一个字符串与模式串匹配的时,若失配,利用前面匹配的信息,利用三部分连等关系。可以滑动的“恰如其分”。
Next数组的求法:
若此时求的是next[i]的数值,j位置之前的与从i开始后j-1个字符都是匹配的,若s[i]==s[j] 那么next[++i]=++j; 若不相等可以j=next[j]滑动回去。
OK,那么什么...
分类:
其他好文 时间:
2014-11-17 21:24:09
阅读次数:
164
http://poj.org/problem?id=3693
Maximum repetition substring
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 7241
Accepted: 2162
Description
The repe...
分类:
编程语言 时间:
2014-11-14 00:19:28
阅读次数:
338
http://poj.org/problem?id=3294
Life Forms
Time Limit: 5000MS
Memory Limit: 65536K
Total Submissions: 9931
Accepted: 2739
Description
You may have wondered why ...
分类:
编程语言 时间:
2014-11-13 22:31:32
阅读次数:
200
题目大意:给定一个字符串,每次取头或者尾放在新字符串里,求字典序最小的新字符串
首先如果两边的字符不一样 那么肯定要选择小的放在新字符串里
但如果两边一样 比如CCBACC 肯定从尾取比较优 原因是CCA比CCB要小
于是我们把原串反写接在后面变成CCBACC@CCABCC 然后跑一遍后缀数组 每次就能O(1)比较两个子串的大小了
时间复杂度O(nlogn)
#include
#incl...
分类:
编程语言 时间:
2014-11-13 16:47:47
阅读次数:
211
http://www.lydsy.com/JudgeOnline/problem.php?id=1031很容易想到这就是将字符串复制到自己末尾然后后缀数组搞出sa然后按区间输出即可。然后换了下模板,将基数排序放到外边#include #include #include #include #inclu...
分类:
编程语言 时间:
2014-11-13 14:16:56
阅读次数:
251
题意:问a串中有多少种字符串集合B中没有的连续子串。a的长度10^5,B中的总长度为不超过10^5.
解法:后缀数组题目;后缀数组可以很容易算出来一个串中有多少种子串。把a和B集合连起来,求一次不同子串数量,然后减掉B相互连起来的数量。在求时候,要减掉含有链接符的子串,方法是扫一遍,枚举最后出现的连接符。
代码:/********************************...
分类:
编程语言 时间:
2014-11-12 19:47:10
阅读次数:
312
题目大意:给定一个n个单词的文章,求每个单词在文章中的出现次数
文章长度
首先将所有单词用空格连接成一个字符串,记录每个单词的起始位置和长度
然后求后缀数组,对于每个单词后缀数组中一定有连续一段后缀以这个单词开头,我们通过一开始记录的起始位置找到这个单词的后缀,然后左右端点二分答案,满足左右端点之间的后缀与原单词的LCP都当与等于原单词长度即可
时间复杂度O(nlogn)
#includ...
分类:
编程语言 时间:
2014-11-12 15:05:52
阅读次数:
823
给定串S和T,求S的每一个后缀和T的最长公共前缀。方法1:暴力算法,时间复杂度O(n^2);方法2:后缀数组,利用height的性质可以求出该问题,时间复杂度为O(n),但是预处理为O(nlogn)方法3:扩展KMP,充分利用已经匹配过的性质,降低匹配的时间,时间复杂度为O(n)学习资料:http:...
分类:
其他好文 时间:
2014-11-11 18:16:53
阅读次数:
248