[回文自动机] BZOJ3676 [Apio2014] . 回文串
2017-10-13 13:34
531 查看
回文自动机的简单应用…
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int N=300010; int n,p,cnt=1; int nxt [30],fail ,len ,size ; char a ; inline void extend(int x,int pos){ while(a[pos]!=a[pos-len[p]-1]) p=fail[p]; if(!nxt[p][x]){ int cur=++cnt,k=fail[p]; len[cur]=len[p]+2; while(a[pos]!=a[pos-len[k]-1]) k=fail[k]; fail[cur]=nxt[k][x]; nxt[p][x]=cur; } p=nxt[p][x]; size[p]++; } int main(){ fail[0]=fail[1]=1; len[1]=-1; scanf("%s",a+1); n=strlen(a+1); for(int i=1;i<=n;i++) extend(a[i]-'a',i); long long ans=0; for(int i=cnt;i;i--){ size[fail[i]]+=size[i]; ans=max(1LL*len[i]*size[i],ans); } printf("%lld\n",ans); return 0; }
相关文章推荐
- BZOJ 3676: [Apio2014]回文串 回文自动机
- [BZOJ]3676: [Apio2014]回文串 回文自动机
- [BZOJ]3676 [APIO2014] 回文串 回文自动机
- bzoj 3676: [Apio2014]回文串 回文自动机
- [BZOJ3676][Apio2014]回文串(回文自动机)
- bzoj 3676: [Apio2014]回文串 回文自动机
- 【APIO2014】回文串 jzoj 3654/洛谷 3649/bzoj 3676 回文树(回文自动机)
- BZOJ 3676 [Apio2014]回文串 回文自动机
- BZOJ3676:[Apio2014]回文串(回文自动机)
- 【BZOJ3676】[Apio2014]回文串 【回文自动机】
- [回文自动机] BZOJ 3676: [Apio2014]回文串
- bzoj 3676: [Apio2014]回文串 manachar+后缀自动机+倍增(回文树)
- 【回文自动机】bzoj3676 [Apio2014]回文串
- 【BZOJ3676】[Apio2014]回文串 回文自动机
- bzoj 3676: [Apio2014]回文串 -- 回文自动机
- 【bzoj3676】[Apio2014]回文串 —— 回文自动机的学习
- [manacher 后缀自动机 || 回文自动机] BZOJ 3676 [Apio2014]回文串
- [bzoj3676][Apio2014]回文串 回文自动机(回文树)
- bzoj 3676: [Apio2014]回文串 (回文自动机)
- bzoj3676 [Apio2014]回文串(回文自动机)