51nod 1089 最长回文子串 V2(Manacher算法)
来源:互联网 发布:二维数组去除重复 编辑:程序博客网 时间:2024/06/07 12:16
#include <bits/stdc++.h>using namespace std;const int MAXN=200100;char a[MAXN],s[MAXN];int f[MAXN],n,ans;void manacher(char *a){int i,r,p,m;s[0]='$';s[1]='#';for(i=1;i<=n;i++){s[i<<1]=a[i-1];s[i<<1|1]='#';}s[(n+1)<<1]='@';m=(n+1)<<1;r=p=0;f[1]=1;for(i=2;i<m;i++){if(r>i)f[i]=min(r-i,f[p*2-i]);elsef[i]=1;for(;s[i-f[i]]==s[i+f[i]];f[i]++);if(i+f[i]>r){r=i+f[i];p=i;}}ans=0;for(i=2;i<m;i++)ans=max(ans,f[i]-1);}int main(){while(scanf(" %s",a)!=EOF){n=strlen(a);manacher(a);printf("%d\n",ans);}}
0 0
- 51nod 最长回文子串 V2(Manacher算法)
- 51nod 1089 最长回文子串 V2 (Manacher算法)
- 51nod-【1089 最长回文子串 V2(Manacher算法)】
- 51nod 1089 最长回文子串 V2(Manacher算法)
- 【51nod】1089 最长回文子串 V2(Manacher算法)
- 51nod 1089 最长回文子串 V2(Manacher算法)
- 51Nod 1089 最长回文子串 V2(Manacher算法)
- 51nod--1089 最长回文子串V2(Manacher 算法)
- 51Nod 1089 最长回文子串 V2(Manacher算法)
- 51nod 1089 最长回文子串 V2(Manacher算法)
- 51Nod-1089 最长回文子串 V2(Manacher算法)
- 51nod 1089 最长回文子串 V2(Manacher算法)
- 51Nod 1089 最长回文子串 V2(Manacher算法)
- 51Nod 1089 最长回文子串 V2 —— Manacher算法
- 51nod1089---最长回文子串 V2(51nod基础:Manacher算法)
- 51nod1089 最长回文子串 V2(Manacher算法)
- 51nod_1089 最长回文子串 V2(Manacher算法)
- 51nod 1089 最长回文字串V2(Manacher算法)
- 缘
- 51nod 1087 1 10 100 1000
- 背包问题
- 51nod 1088 最长回文子串
- interrupt、interrupted 、isInterrupted 区别
- 51nod 1089 最长回文子串 V2(Manacher算法)
- UVa658 It's not a Bug, it's a Feature!
- 时间复杂度和空间复杂度
- 51nod 1090 3个数和为0
- hdu oj从1000-1001-1002
- JMM主内存与工作内存交互
- 常用开发工具的API文档大全
- NOIP2012提高组 同余方程
- Linux Shell 通配符、元字符、转义符使用实例介绍