10 2013 档案

摘要:不能循环输入。。。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn=200000+10; 6 char s[maxn]; 7 int sa[maxn],t[maxn],t2[maxn],c[maxn]; 8 int rank[maxn],height[maxn]; 9 void build_sa(int n,int m)10 {11 int i,*x=t,*y=t2;12 for(i=0;i=0;i--) sa[--c[x[i]]]=i;16 17 for(int k=1;... 阅读全文
posted @ 2013-10-25 16:19 sooflow 阅读(209) 评论(0) 推荐(0)
摘要:求最长回文字串。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn=2000+10; 6 char s[maxn]; 7 int sa[maxn],t[maxn],t2[maxn],c[maxn]; 8 int rank[maxn],height[maxn]; 9 void build_sa(int n,int m)10 {11 int i,*x=t,*y=t2;12 for(i=0;i=0;i--) sa[--c[x[i]]]=i;16 17 for(int k=1;k=k... 阅读全文
posted @ 2013-10-24 22:51 sooflow 阅读(175) 评论(0) 推荐(0)
摘要:n-sa[k]+1-height[k] 累加 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn=1000+10; 6 char s[maxn]; 7 int sa[maxn],t[maxn],t2[maxn],c[maxn]; 8 int rank[maxn],height[maxn]; 9 void build_sa(int n,int m)10 {11 int i,*x=t,*y=t2;12 13 for(i=0;i=0;i--) sa[--c[x[i]]]=i;17 f... 阅读全文
posted @ 2013-10-22 16:23 sooflow 阅读(204) 评论(0) 推荐(0)
摘要:二分答案,利用height数组进行判定。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn=20000+10; 6 const int maxvalue=1000000+10; 7 int s[maxn]; 8 int sa[maxn],t[maxn],t2[maxn],c[maxvalue],n; 9 int rank[maxn],height[maxn];10 void build_sa(int m)11 {12 int i,*x=t,*y=t2;13 for(i=0;i=0;i... 阅读全文
posted @ 2013-10-22 13:20 sooflow 阅读(229) 评论(0) 推荐(0)
摘要:第一道后缀数组。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxvn=20000+10; 6 int s[maxvn]; 7 int sa[maxvn],t[maxvn],t2[maxvn],c[maxvn]; 8 int rank[maxvn],height[maxvn]; 9 void build(int n,int m)10 {11 int i,*x=t,*y=t2;12 13 for(i=0;i=0;i--) sa[--c[x[i]]]=i;18 for(int k... 阅读全文
posted @ 2013-10-21 21:00 sooflow 阅读(163) 评论(0) 推荐(0)
摘要:字典树加拓扑排序 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxnode=300000+5; 8 const int maxn=30000+5; 9 struct Trie 10 { 11 int ch[maxnode][26]; 12 int pre[maxnode]; 13 int val[maxnode]; 14 string s[maxn]; 15 int terminal[maxn]; 16 int s... 阅读全文
posted @ 2013-10-20 00:18 sooflow 阅读(248) 评论(0) 推荐(0)
摘要:ac自动机 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxnode=150*70+5; 7 char s[155][75]; 8 char in[1000000+5]; 9 struct Trie 10 { 11 int ch[maxnode][26]; 12 int val[maxnode]; 13 int f[maxnode]; 14 int cnt[155]; 15 int sz; 16 void init... 阅读全文
posted @ 2013-10-13 11:02 sooflow 阅读(240) 评论(0) 推荐(0)
摘要:AC自动机裸题 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxnode=10000*50+5; 6 char in[1000000+5]; 7 struct Trie 8 { 9 int ch[maxnode][26];10 int val[maxnode];11 int fail[maxnode];12 int sz;13 void initial(){sz=1;memset(ch[0],0,sizeof(ch[0]));memset(val,0,sizeo... 阅读全文
posted @ 2013-10-12 18:01 sooflow 阅读(146) 评论(0) 推荐(0)
摘要:模拟水题 1 #include 2 #include 3 4 const int maxn=1000000+5; 5 6 int b[maxn]; 7 int e[maxn]; 8 9 int main()10 {11 // freopen("icpc.in","r",stdin);12 // freopen("icpc.out","w",stdout);13 int B,E;14 while(scanf("%d%d",&B,&E)!=EOF)15 {16 int t=0;17 阅读全文
posted @ 2013-10-10 21:51 sooflow 阅读(400) 评论(0) 推荐(0)
摘要:kmp next数组应用。 1 #include 2 #include 3 const int maxn=1000000+5; 4 char s[maxn]; 5 int next[maxn]; 6 int snext[maxn]; 7 void get_next(char *T,int len,int *next) 8 { 9 next[0]=-1;10 for(int i=1;i=0)14 j=next[j];15 if(T[i]==T[j+1])next[i]=j+1;16 else next[i]=0;17 }1... 阅读全文
posted @ 2013-10-10 21:50 sooflow 阅读(280) 评论(0) 推荐(0)