字符串
micaudience
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Lyndon分解
Lyndon分解HDU-6761原创 2020-08-19 22:11:55 · 1113 阅读 · 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 · 142 阅读 · 0 评论 -
AC自动机
一、模板二、题目1.[JSOI2007]文本生成器2.[NOI2011]阿狸的打字机原创 2020-07-17 16:51:13 · 161 阅读 · 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 · 139 阅读 · 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 · 232 阅读 · 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 · 657 阅读 · 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 · 1068 阅读 · 0 评论
分享