
后缀数组
Aerolite坠落
这个作者很懒,什么都没留下…
展开
-
POJ 1226 Substrings (后缀数组)
题目地址:POJ 1226 将每一个字符串反转连接一次,再把所有字符串都连接起来,然后二分,找最大长度。注意与反转字符串之间不能直接相连。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include原创 2015-11-03 12:36:35 · 524 阅读 · 0 评论 -
POJ 2774 Long Long Message (后缀数组)
题目地址:POJ 2774 后缀数组第一发!后缀数组真是太神奇了。。(好像每学一种新算法我都会这么说。。 原理研究了好长时间,还有代码的实现,论文作者罗穗骞的代码太简洁。。好难看懂QAQ,看了好长时间。 来一发后缀数组模板题,模板是用的倍增思想。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <原创 2015-10-29 19:48:25 · 595 阅读 · 0 评论 -
POJ 3261 Milk Patterns (后缀数组)
题目地址:POJ 3261 求出height数组之后,所求答案即是所有长度大于k的区间中最小height值的最大值。所以可以二分一下这个最大值,判断是否有存在长度大于k且最小值大于等于这个值得区间。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm原创 2015-10-29 20:42:13 · 498 阅读 · 0 评论 -
Ural 1297 Palindrome (后缀数组)
题目地址:Ural 1297 后缀数组模板题。把字符串倒过来接到字符串后面,并在中间加一个从未出现的字符。然后用后缀数组就可以了。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <ma原创 2015-11-02 19:06:10 · 623 阅读 · 0 评论 -
POJ 1743 Musical Theme (后缀数组)
题目地址:POJ 1743 二分长度,由于相似的都挨在一块,所以需要判断大于等于mid的区间的位置最左端与最右端是否大于mid. 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map原创 2015-11-02 21:12:59 · 579 阅读 · 0 评论 -
POJ 3294 Life Forms (后缀数组)
题目地址:POJ 3294 把所有字符串连在一块,并用一个从未出现的字符隔开,注意这个每两个之间的用来隔开的字符也不能重复,除非对1个的时候进行特判。 然后二分长度,然后判断这个长度下能否有出现次数超过n/2次的,可以对其分组然后hash判断。找出最大长度之后,再用同样的方法从头找一遍,然后把符合要求的输出、 代码如下:#include <iostream>#原创 2015-11-02 23:36:28 · 619 阅读 · 0 评论 -
SPOJ 705 New Distinct Substrings (后缀数组)
后缀数组模板题。由于height数组是指与排名上一个的公共前缀,所以重复的个数是height[i]个,考虑当前这个字母所构成的子串的贡献即为n-sa[i]-height[i],然后累加即可。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#in原创 2015-11-02 19:47:57 · 633 阅读 · 0 评论