字符串
欧菲博客
这个作者很懒,什么都没留下…
展开
-
Trie测试
#include#include#include#define maxnode 1000#define charnum 27using namespace std;struct Trie{ int sz;//当前字符个数 int c[maxnode][charnum]; int val[maxnode]; Trie(){ sz=1;memset(c[0],-1,size原创 2014-07-16 10:34:13 · 314 阅读 · 0 评论 -
AC自动机
#include #include #include #include#define maxnode 1000 #define charnum 27 using namespace std; struct AC{ int sz;//当前字符个数 int ch[maxnode][charnum]; int val[maxnode]; i转载 2014-07-17 01:03:53 · 304 阅读 · 0 评论 -
KMP模板
char text[maxn*2],pat[2*maxn];int nxt[2*maxn];void get_next(char *s){ int i=0,j=-1,len=strlen(s); nxt[0]=-1; while(i<len) { if(j==-1||s[i]==s[j]) { i++; j++; nxt原创 2014-06-16 21:56:17 · 356 阅读 · 0 评论 -
入门经典训练指南后缀数组算法小弯
for(int i=n-k;ifor(int i=0;i=k)y[p++]=sa[i]-k;这是利用sa[]数组构造第二关键字序列的程序,先将没有第二关键字的那些后缀收录,排在y的头k位。然后从sa[0]开始向后测试,先看到的s[s[i]]一定比后看到的小,如果sa[i]>=k,这时如果将sa[i]的位置当做一个后缀的第二个关键字,往前数k,它相应的第一个关键字的位置不会小于零原创 2014-07-10 22:40:42 · 473 阅读 · 0 评论