后缀数组
wtcl
这个作者很懒,什么都没留下…
展开
-
后缀数组讲解
1.DC3 #include <cstdio> #include <cstring> #include<iostream> #include <algorithm> #define F(x) ((x) / 3 + ((x) % 3 == 1 ? 0 : tb)) #define G(x) ((x) < tb ? (x) * 3 + 1 : ((...原创 2020-03-31 22:53:39 · 190 阅读 · 0 评论 -
POJ - 3693(后缀数组)
讲解:https://blog.csdn.net/queuelovestack/article/details/53035903 #include <cstdio> #include <cstring> #include<iostream> #include <algorithm> #include<cmath> #define F(x)...原创 2020-04-02 09:56:14 · 227 阅读 · 0 评论 -
POJ - POJ - 3261(后缀数组)
可重叠的 k 次最长重复子串 给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。 算法分析: 这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不 同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在 k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O(nlogn)。 #include <cstdio> #incl...原创 2020-04-01 09:00:34 · 112 阅读 · 0 评论 -
POJ - 1743(后缀数组)
给定一个字符串,求最长重复子串,这两个子串不能重叠。 算法分析: 这题比上一题稍复杂一点。先二分答案,把题目变成判定性问题:判断是否 存在两个长度为 k 的子串是相同的,且不重叠。解决这个问题的关键还是利用height 数组。把排序后的后缀分成若干组,其中每组的后缀之间的 height 值都不小于 k。例如,字符串为“aabaaaab”,当 k=2 时,后缀分成了 4 组。 容易看出,有希望成为最...原创 2020-04-01 00:20:34 · 170 阅读 · 0 评论 -
SPOJ - DISUBSTR(后缀数组)
不相同的子串的个数 给定一个字符串,求不相同的子串的个数。 算法分析: 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相 同的前缀的个数。如果所有的后缀按照 suffix(sa[1]), suffix(sa[2]), suffix(sa[3]), …… ,suffix(sa[n])的顺序计算,不难发现,对于每一次新加 进来的后缀 suffix(sa[k]),它将产生 n-sa[k...原创 2020-03-31 22:56:17 · 100 阅读 · 0 评论