后缀数组
文章平均质量分 81
DT2131
Rage, rage against the dying of the light.Do not go gentle into that good night.
展开
-
POJ - 3581 Sequence
题意: 把数组分成3分,每一份都翻转,要求输出字典序最小的结果 思路: 保证第一个数最大,所以第一部分直接找字典序最小的。(SA第一遍) 其后由于只需把剩下的串分成两部分,所以不需要考虑最后一节,只需保持中间的一节为最小字典序。 故形同求串的最小表示,要将串复制一遍,再求最小字典序。(SA第二遍) 代码: #includ原创 2017-03-08 12:27:02 · 339 阅读 · 0 评论 -
POJ - 2217 Secretary
题意: 给出 N 组数据,每组数据两个串,求串的最长公共字串 思路: 同 POJ 2774 后缀数组解决。 代码: #include #include #include #include #include using namespace std; /*suffix array *倍增算法 O(n*logn) *待排序数组长度为n,放在0~n-原创 2017-03-08 13:55:08 · 321 阅读 · 0 评论 -
POJ - 2774 Long Long Message
题意: 求两个串的最长连续子串。 思路: 由于串匹配算法较多,我们要先分析。 先看数据规模 Two strings with lowercase letters on two of the input lines individually. Number of characters in each one will never exceed原创 2017-03-08 13:24:03 · 321 阅读 · 0 评论 -
POJ - 3261 Milk Patterns
题意: 给出一串数,求可重叠k次的最长重复子串。 思路: 后缀数组。 先二分答案,然后将后缀分成若干组。 这里要判断的是有没有一个组的后缀个数不小于k。 如果有,那么存在k个相同的子串满足条件,否则不存在。 时间复杂度为O(nlogn) 。 可参考 09 年国家队论文 罗穗骞《后缀数组原创 2017-03-08 14:16:39 · 348 阅读 · 0 评论 -
POJ - 1509 Glass Beads
题意: 求字符串的最小表示 思路: 后缀数组裸题 代码: #include #include #include #include #include using namespace std; /*suffix array *倍增算法 O(n*logn) *待排序数组长度为n,放在0~n-1中,在最后面补一个0 *build_sa(,n+1, ); //注意是n+原创 2017-03-08 14:20:34 · 382 阅读 · 0 评论