HUSTOJ 2796 && SPOJ1811
来源:互联网 发布:中国石油库存数据 编辑:程序博客网 时间:2024/05/28 19:25
传送门:http://begin.lydsy.com/JudgeOnline/problem.php?id=2796View Code
题解:后缀自动机,很裸,但是感觉对后缀自动机还不是特别理解,毕竟我太蒟蒻,等我精通了,再写对它的理解吧。。。
还有写这道题的时候发现数组下标又时候是负数竟然不会爆。。。。。。因为这道题有大写也有小写,可我只开了26竟然A了(后面才发现)。。。。懒得改了
代码:
1 #include<algorithm> 2 #include<iostream> 3 #include<cstring> 4 #include<cstdio> 5 #define N 250005 6 using namespace std; 7 struct data{ 8 int go[26],val,fa; 9 }son[N*2];10 int n,m,tot,last,root,sum,ans;11 char s[N],c[N];12 int newnode(int x){son[++tot].val=son[x].val+1; return tot;}13 void extend(int x)14 {15 int p=last,np=newnode(p);16 while (p && !son[p].go[x]) son[p].go[x]=np,p=son[p].fa;17 if (!p) son[np].fa=root;18 else19 {20 int q=son[p].go[x];21 if (son[q].val==son[p].val+1) son[np].fa=q;22 else23 {24 int nq=newnode(p);25 memcpy(son[nq].go,son[q].go,sizeof(son[q].go));26 son[nq].fa=son[q].fa;27 son[q].fa=son[np].fa=nq;28 while (p && son[p].go[x]==q) son[p].go[x]=nq,p=son[p].fa;29 }30 }31 last=np;32 }33 int main()34 {35 last=root=tot=1; 36 scanf("%s",s+1); scanf("%s",c+1);37 n=strlen(s+1); m=strlen(c+1);38 for (int i=1; i<=n; i++) extend(s[i]-'a');39 for(int i=1,pp=root;i<=m;i++){40 int f=c[i]-'a';41 if(son[pp].go[f]) sum++,pp=son[pp].go[f];42 else{43 while(pp && !son[pp].go[f]) pp=son[pp].fa;44 if(pp) sum=son[pp].val+1,pp=son[pp].go[f];45 else sum=0,pp=root;46 }47 ans=max(ans,sum);48 }49 printf("%d\n",ans);50 }
0 0
- HUSTOJ 2796 && SPOJ1811
- AMP
- AMP
- amp
- Spring.Net&amp;amp;amp;amp;amp;NHibernate 学习
- TweenLite&amp;amp;&amp;amp;TweenMax系列(一)
- sockaddr &amp;&amp; sockaddr_in
- awk&amp;&amp;sed脚本语言
- 重新开张 &amp;amp;amp;&amp;amp;amp; two pieces of fascinating code
- CsvWriter&&CsvReader
- exit &amp; $?问题
- lex &amp; yacc
- java &amp; 模式
- 坚持&& 加油
- CopyFile && MoveFile
- CreateDataCloumnAddDataTable&&CreateDataTableAddDataSet
- servlet&&jsp
- easystruts&&struts
- JMeter中可以使用的一些获取日期时间的方法
- bzoj3262: 陌上花开
- bzoj3295: [Cqoi2011]动态逆序对
- HDU 5842:Lweb and String (统计)
- bzoj2141: 排队
- HUSTOJ 2796 && SPOJ1811
- 学习后缀自动机想法
- [Poi2000]公共串 && hustoj2797
- OpenJ_Bailian 4120 dp
- bzoj2555
- bzoj3998 && [TJOI2015]弦论
- Bzoj3756
- Bzoj 1936
- 通用图优化(G2O)环境搭配(windows8.1 vs2013)