![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后缀数组
文章平均质量分 56
萌之上荡漾
这个作者很懒,什么都没留下…
展开
-
poj 2774 Long Long Message
链接分析:sa的板子题,mark一下。 附带自己的sa学习小结。代码:/*****************************************************/ //#pragma comment(linker, "/STACK:1024000000,1024000000") #include <map> #include <set> #include <ctime> #inc原创 2016-11-12 17:10:51 · 203 阅读 · 0 评论 -
后缀数组学习小结(已经死了)
一直想学习后缀数组,但是lrj的算法经典上只给出了原理和代码,代码上面没有注释,让人很难读懂。所以我对后缀数组的了解一直停留在知道这个东西和倍增法的原理,至于板子和套路完全不知。 最近还是死啃了板子,把我现在掌握的东西记成博文,也方便自己和大家。 本人也不是很会这个,如果dalao们发现了问题,请指正! 首先,倍增法在算法竞赛上已经讲得非常详细了,在此我也不再赘述,大家自己阅读书吧。我在这就...原创 2016-11-12 17:52:47 · 408 阅读 · 0 评论 -
spoj Distinct Substrings
题目链接分析: sa后缀数组题。正着不好做可以反着想。我们可以思考重复的串有多少个,这就对应着后缀数组求完后求的height数组。每个height[i]height[i]长度的串可以构成height[i]height[i]个重复的串,通过总的减去就行了。刘汝佳的大白sa模板有一些小问题,在此进行了修正。代码:/********************************************原创 2016-11-17 21:47:03 · 168 阅读 · 0 评论 -
poj 3261 Milk Patterns
链接分析:sa的板子题之一,比男人八题的musical theme还要稍微简单一点。 先做好sa和height的板子,然后二分长度找答案。 关于如何确定同一个串是否出现k次,我是这么想的: height[i]数组是中的字符串是以字典序排列的,所以说如果height[k]和height[k + 1]都是大于二分值mid的,而这三个串又是相连的,说明他们的前mid长度的子串是相同的。所以对heig原创 2016-11-14 20:57:43 · 222 阅读 · 0 评论 -
spoj Repeats
题目链接分析:这是一道sa的经典题目,求一个长串中连续重复出现的的串的最大次数。 首先将sa和height数组求出来。 这样思考:如果一个串连续出现了k次,设这个串长度为len,如果在第i位出现了串中的某个字符,那么i + len, i + 2*len……都会出现这个字符。 那么先枚举串的长度len,对于每个i + k * len位,应该都能够有最长公共子串lcp>=len,串重复的次数为原创 2016-11-18 20:42:41 · 243 阅读 · 0 评论