![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后缀数组
文章平均质量分 78
BryantMark
这个作者很懒,什么都没留下…
展开
-
lightoj 1428 后缀数组
直接用后缀数组求出A串中所有与B串匹配的位置(既然这里用后缀数组,我就不用KMP了,直接用RMQ求LCP) 。 关键是第二步。对于每个 后缀 , 如果这个后缀的前缀( sa[i] sa[i+1].......sa[i]+h[i] ) 这段中包含B串 则直接跳过,否则 求出两个端点 l,r ,其中 l 为sa[i]+h[i], r为满足(r>=l) 且下标最小的B串匹配位置减去 1(原创 2013-03-13 00:45:28 · 537 阅读 · 0 评论 -
后缀数组 HDU 4436
做法:首先应用求不同子串的算法,自然想到后缀数组,然后就是要统计以非‘0’开始的后缀。 考虑后缀 AkAk+1Ak+2........................An tmp[0]=Ak-'0', tmp[i]=tmp[i-1]*10+(Ai-'0') sum[i]=sum[i-1]+tmp[i];原创 2013-04-29 12:33:58 · 761 阅读 · 0 评论 -
hdu 3948 后缀数组统计不同回文串的个数
字符串颠倒后接在后面,后缀数组排序,求回文串的时候分奇偶性讨论下就好了(也可以用Mancher 算法然后用多项式Hash 函数处理,这样应该是最快的)但是Hash函数一定要足够好,这里后缀数组相对保险一些吧,毕竟一个字符串的回文串数目不超过是o(n)级别的,后缀数组纵然是慢一些,也总能AC的#include #include #include #include #i原创 2013-05-01 19:57:37 · 594 阅读 · 0 评论 -
zoj 3661 Palindromic Substring(后缀数组)
首先记录每种回文串,然后我用height 数组二分查找统计每种回文串的出现次数,暴力排序求第K小的值 #include #include #include #include #include #include #include #include #include #include #include #include #include #include usi原创 2013-05-02 19:31:25 · 663 阅读 · 0 评论 -
http://acm.buaa.edu.cn/problem/533/ AC 自动机加后缀数组
#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int maxn = 211111;struct node { int fail, len; bool flag;原创 2013-04-19 13:36:18 · 670 阅读 · 0 评论 -
G3. Good Substrings
http://codeforces.com/contest/316/problem/G3利用RMQ 求 后缀的前缀在每个串里面的个数二分每个后缀满足要求的最大和最小前缀长度我用了十个后缀数组代码写得有些拖沓#include #include #include using namespace std;#define lson l,m,rt<<1#define rson原创 2013-06-14 14:21:25 · 956 阅读 · 0 评论