![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kmp
DOFYPXY
这个作者很懒,什么都没留下…
展开
-
[2017纪中10-31]Sequence 差分+kmp
题面 差分一下,只要b和a的某一段完全相同就满足条件,跑一边kmp就行。 注意特判lenb=1的情况(差分出来就没了。。。) 代码:#include<iostream> #include<cstdio> using namespace std; const int maxn=1000010; int n,m,a[maxn],b[maxn],nxt[maxn]; int read() {原创 2017-10-31 15:28:46 · 328 阅读 · 0 评论 -
[BZOJ4974]字符串大师
不难发现结论peri=i−nextiper_i=i-next_i,nextnext就是kmp里的失配数组。 考虑构造一个字符串ss满足上述nextnext数组,定义ii的失配集为{nexti−1+1}∪nexti−1+1\{next_{i-1}+1\}\cup next_{i-1}+1的失配集。若nexti>0next_i>0则si=snextis_i=s_{next_i},若nexti=0ne原创 2018-01-04 21:43:29 · 471 阅读 · 0 评论 -
扩展KMP
扩展KMP 为了叙述方便,设S(i)S(i)S_{(i)}为串SSS从iii开始的后缀 扩展KMP可以在线性时间内求出对于一个文本串SSS的每一个后缀S(i)S(i)S_{(i)}与模板串TTT的最长公共前缀(LCP),我们设其为exiexiex_i。 假设我们已经知道了T(i)T(i)T_{(i)}与TTT的LCP,设为nextinextinext_i,考虑怎么求exiexiex_i。...原创 2018-04-25 11:11:53 · 328 阅读 · 0 评论 -
[BZOJ3670]动物园 扩展KMP
先用扩展KMP求出Si..nSi..nS_{i..n}与SSS的LCPnextinextinext_{i}。 考虑每个后缀Si..nSi..nS_{i..n}的所有前缀Si..kSi..kS_{i..k}对numknumknum_k的贡献,有贡献的kkk显然是在一个区间[i,min(2i−1,i+nexti)−1][i,min(2i−1,i+nexti)−1][i,\min(2i-1,i+ne...原创 2018-04-25 15:31:01 · 251 阅读 · 0 评论 -
[GDOI2014]beyond 扩展KMP+并查集
题目等价于求给定两个长度都为nnn的串A,BA,BA,B,求一个最大的LLL使得A1..LA1..LA_{1..L}与B1..LB1..LB_{1..L}循环同构。 我们先对A,BA,BA,B互相做一遍扩展KMP,记Ai..nAi..nA_{i..n}与BBB的LCP为exaiexaiexa_i,exbexbexb同理。 循环同构一定是存在xxx,使得A1..x=BL−x+1..L ...原创 2018-04-25 15:56:29 · 257 阅读 · 0 评论