bzoj3676 回文串【回文树】
来源:互联网 发布:电脑软件怎么卸载 编辑:程序博客网 时间:2024/06/05 03:52
解题思路:
回文树模板题,建好后取每个节点cnt*len的最大值即可。
回文树解析详见:http://blog.csdn.net/u013368721/article/details/42100363
真的好文。
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<algorithm>#include<ctime>#include<vector>#include<queue>#define ll long longusing namespace std;int getint(){ int i=0,f=1;char c; for(c=getchar();(c!='-')&&(c<'0'||c>'9');c=getchar()); if(c=='-')c=getchar(),f=-1; for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0'; return i*f;}const int N=300005;struct node{ int son[26],fail,cnt,len;}tr[N];int n,tot=-1,last;char s[N];ll ans;int newnode(int l){ tr[++tot].len=l; return tot;}void Init(){ newnode(0); newnode(-1); last=0,tr[0].fail=1,s[0]='#';}int getfail(int x){ while(s[n-tr[x].len-1]!=s[n]) x=tr[x].fail; return x;}void Insert(char c){ s[++n]=c; int cur=getfail(last); if(!tr[cur].son[c-'a']) { int now=newnode(tr[cur].len+2); tr[now].fail=tr[getfail(tr[cur].fail)].son[c-'a']; tr[cur].son[c-'a']=now; } last=tr[cur].son[c-'a']; tr[last].cnt++;}int main(){ //freopen("lx.in","r",stdin); char c; Init(); for(c=getchar();c<'a'||c>'z';c=getchar()); while(c>='a'&&c<='z') Insert(c),c=getchar(); for(int i=tot;i>=0;i--)tr[tr[i].fail].cnt+=tr[i].cnt; for(int i=2;i<=tot;i++)ans=max(ans,1ll*tr[i].len*tr[i].cnt); cout<<ans<<'\n';}
阅读全文
0 0
- bzoj3676 回文串 回文树
- bzoj3676 回文串【回文树】
- BZOJ3676 回文串 (回文树)
- bzoj3676 回文串 回文自动机
- [bzoj3676][Apio2014]回文串 回文自动机(回文树)
- bzoj3676: [Apio2014]回文串
- 【APIO2014】【BZOJ3676】回文串
- BZOJ3676: [Apio2014]回文串
- [bzoj3676][APIO2014]回文串
- bzoj3676【APIO2014】回文串
- BZOJ3676: [Apio2014]回文串
- 【bzoj3676】[Apio2014]回文串
- bzoj3676: [Apio2014]回文串
- [bzoj3676]回文串
- [BZOJ3676][Apio2014]回文串-后缀自动机+Manacher | | 回文树
- Bzoj3676:[Apio2014]回文串:回文自动机
- 【BZOJ3676】[Apio2014]回文串 【回文自动机】
- [BZOJ3676][Apio2014]回文串(回文自动机)
- 【JavaSE】作业练习1118
- Spring @Scheduled定时任务动态修改cron参数
- 【Scikit-Learn 中文文档】决策树
- 关于android主题报错
- 为什么列存储数据库读取速度会比传统的行数据库快?
- bzoj3676 回文串【回文树】
- java 学习自定义注解Annotation
- 51nod 1203 JZPLCM
- python调用百度翻译api(自己写的非官方demo)
- Ajax提交textarea文本域数据怎么传值
- Map练习
- 【Scikit-Learn 中文文档】集成方法
- c语言中关于const的使用
- 【Scikit-Learn 中文文档】多类和多标签算法