
后缀数组
Roll_Keyboard
这个作者很懒,什么都没留下…
展开
-
POJ 1743 Musical Theme(二分+后缀数组)
题意:求不重叠的最长相同变化的子串的最长长度,比如1 2 3 4 5 6 7 8 9 10,最长长度为5,因为子串1 2 3 4 5 和 6 7 8 9 10变化都一样的思路:男人八题之一,然而poj上a了都一万多了。。。。 思路在论文里面讲的很清楚了(其实应该是一个区间最大sa减去最小sa大于k,而不是大于等于,dicuss有人说了这个问题,我也是这么认为的,不过因为poj数据太水导致都能过)。原创 2017-11-08 17:03:32 · 280 阅读 · 0 评论 -
POJ 3261 Milk Patterns(二分+后缀数组)
题意:找出出现k次的可重叠的最长子串的长度思路:论文的一道题,就跟论文思路一样,二分长度,根据height将后缀分成很多组,如果有一组出现了k次以上,就存在这个长度的符合题意的字串。错误及反思:代码:#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 20100; int原创 2017-11-08 21:11:52 · 231 阅读 · 0 评论 -
SPOJ DISUBSTR Distinct Substrings(后缀数组)
题意:一个字符串有多少个不同的字串思路:一个字符串共有n∗(n+1)2\frac{ n*(n+1) }{2}个,减去所有的height数组的值,就是减去了所有重复的子串错误及反思:代码:#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 1010; char arr[N];原创 2017-11-08 21:43:53 · 317 阅读 · 0 评论 -
SPOJ SUBST1 New Distinct Substrings(后缀数组)
题意:一个字符串有多少个不同的字串思路:题意与思路和 SPOJ DISUBSTR完全相同,唯一不同是数据范围,用后缀数组复杂度完全够,注意下long long 即可错误及反思:代码:#include<bits/stdc++.h> using namespace std; const int N=50000+10; int sa[N],rak[N],height[N]; char s[N]; void原创 2017-11-08 21:31:23 · 256 阅读 · 0 评论 -
POJ 2406 Power Strings(后缀数组或KMP或扩展KMP)
题意:给你一个字符串求最多循环了多少次(这个题保证了最后一个循环节是完整的)思路:就是求最小循环节,这个问题可以用后缀数组,KMP,扩展KMP都能做出来,不过我个人觉得求最小循环节还是扩展KMP最好写了,KMP其次,后缀数组搞这个反而有点多余。。。不过既然论文提到了后缀数组的写法,那就写写好了 首先是扩展KMP,在求出扩展KMP的next数组后,找到第一个next[i]+i==lennext[i]原创 2017-11-13 21:02:18 · 353 阅读 · 0 评论