![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
selia1078
这个作者很懒,什么都没留下…
展开
-
Lyndon分解
Lyndon分解HDU-6761原创 2020-08-19 22:11:55 · 986 阅读 · 0 评论 -
后缀数组
一、模板1. get_savoid get_sa(int n,int m){ for(int i = 1; i <= n; i++) x[i] = ss[i]; for(int i = 0; i <= m; i++) c[i] = 0; for(int i = 1; i <= n; i++) c[x[i]]++; for(int i = 1; i <= m; i++) c[i] +=c[i - 1]; for(int i = n; i > 0; i--) sa[原创 2020-07-21 16:55:16 · 73 阅读 · 0 评论 -
AC自动机
一、模板二、题目1.[JSOI2007]文本生成器2.[NOI2011]阿狸的打字机原创 2020-07-17 16:51:13 · 99 阅读 · 0 评论 -
回文自动机
构建两棵Trie树,分别记录长度为奇数/偶数的回文串。fail指针指向对侧的树。先通过跳前一个位置的fail找到当前位置向前的最长回文串,并新建节点表示该串。然后,对跳该串的父节点的fail以确定该串的fail。注意初始状态fa[0] =1, fa[1] =0, len[0]=0, len[1]=-1;洛谷模板P5496#include<iostream>#include<cstdio>#include<cstdlib>#include<cs原创 2020-07-16 21:10:52 · 75 阅读 · 0 评论 -
最小表示法
模板模板题:洛谷P1386void mins(int n){ for(int i=1;i<=n;i++) a[i+n]=a[i]; int p1=1, p2=2; while(p1<=n&&p2<=n) { int j; for(j=0;j<n;j++) if(a[p1+j]!=a[p2+j]) break; if(a[p1+j]>a[p2+j]) p1=p1+j+1; else p2=p2+j+1; if(p1==p2原创 2020-06-28 10:41:31 · 153 阅读 · 0 评论 -
后缀自动机(SAM)& 广义后缀自动机
一、模板1.后缀自动机2.广义后缀自动机二、题目1.CF gym100956 K2.(SPOJ8222)3.(SPOJ) LCS(最长公共子串)4.(SPOJ) LCS25.牛客多校2020第2场A6.[SCOI2012]喵星球上的点名原创 2020-05-29 22:04:13 · 419 阅读 · 0 评论 -
KMP与扩展KMP(Z函数)
模板KMPvoid getfail(){ int i,j; j=0; for(i=2;i<=n;i++) { while(j&&s[i]!=s[j+1]) j=nxt[x][j]; if(s[i]==s[j+1]) j++; nxt[i]=j; } } 扩展KMPa[1……m], b[1……n]s = a + ‘*’ + b...原创 2020-04-20 21:30:18 · 646 阅读 · 0 评论