POJ
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
POJ - 3415 Common Substrings 后缀数组+单调栈+前缀和
题意:给出两个字符串,求出它们的相同的长度至少为k的子串的个数。 后缀数组+单调栈+前缀和 把a、b这两个字符串用'#'连起来,然后求出它们的后缀数组,然后后缀ai和后缀bi的的满足要求的子串的个数是 max(0, LCP(suffixai, suffixbj) - k + 1); 根据后缀数组的性质,也就是后缀i后缀j的LCP 等于这段height的最小值。 因此对于每个ai考虑ai之前的所有bi, sum{max(0, LCP(suffixai, suffixbj) - k + 1)} rank[ai]原创 2017-02-16 17:33:21 · 855 阅读 · 0 评论 -
POJ - 3882 Stammering Aliens 后缀数组、二分、二叉堆、ST表
题意:给出一个字符串,要求找出至少出现m次的最长子串长度。 后缀数组、二分、二叉堆、ST表 所求的就是相邻的m个后缀的LCP,即这m-1个height[i]的最小值, 所以可以二分答案,或者用ST表(O(nlogn)预处理,O(1)查询)来维护,或者用二叉堆也可以,这三种方法的运行速度依次降低。原创 2017-02-17 21:27:08 · 713 阅读 · 0 评论 -
POJ - 2104 K-th Number 主席树基础题
题意:给出一个数组,每次询问这个数组的区间[L, R]内第k大的数是什么。 主席树基础题 主席树,又称可持久化线段树,是对于数组的每个前缀a[1...i]建立一颗线段树,并且a[1...i]的线段树和a[1...i+1]的线段树的区别是只有树上的一条链不同,所以每次对于一颗新的线段树其实只是添加一条长度为logn的链。 它的核心是寻找公共节点和主席树的加减性。 时间复杂度每次查询和修改都是logn,并且空间复杂度大概是O(nlogn)所以一般开20*MAXN的数组应该没有问题。 这里推荐一篇讲解主席树讲得很原创 2017-07-31 14:22:35 · 765 阅读 · 0 评论