HDU 3068 回文串--Manacher
2013-12-02 15:15
295 查看
//2009 Multi-University Training Contest 16 - Host by NIT //最长回文 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 100000 + 10; char Ma[maxn*2]; int Mp[maxn*2]; void Manacher(char s[],int len) { int l=0; Ma[l++]='$'; Ma[l++]='#'; for(int i=0;i<len;i++) { Ma[l++]=s[i]; Ma[l++]='#'; } Ma[l]=0; int mx=0,id=0; for(int i=0;i<l;i++) { Mp[i]=mx>i?min(Mp[2*id-i],mx-i):1; while(Ma[i+Mp[i]]==Ma[i-Mp[i]]) Mp[i]++; if(i+Mp[i]>mx) { mx=i+Mp[i]; id=i; } } } char s[maxn]; int main() { while(~scanf("%s",s)) { int len=strlen(s); Manacher(s,len); int ans=0; for(int i=0;i<2*len+2;i++) ans=max(ans,Mp[i]-1); printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 3068_求最大回文串_manacher算法_O(n)
- HDU 3068 最长回文 (Manacher最长回文串)
- hdu 3068 && pku 3974 (最长回文串)(Manacher 算法)
- HDU 3068(回文串 Manacher)
- hdu 3068 最长回文 Manacher求最大回文串
- hdu 3068 最长回文串 o(n) Manacher 算法
- HDU 3068 回文串--Manacher
- manacher算法求最长回文串 和 hdu 3068 最长回文串
- hdu 3068 最长回文 (Manacher算法求最长回文串)
- hdu 3068(manacher模板)
- hdu 3068 最长回文 manacher
- hdu----(4513)吉哥系列故事——完美队形II(manacher(最长回文串算法))
- hdu 3068 最长回文 【Manacher求最长回文子串,模板题】
- hdu 3068 最长回文 【Manacher求最长回文子串,模板题】
- HDU 5340——Three Palindromes——————【manacher处理回文串】
- HDU 3068 Manacher 模板题
- HDU 3068 最长回文 (Manacher 模板题)
- POJ 3974 HDU 3068 最长回文子串 Manacher 算法
- hdu-3068-最长回文(manacher)
- Girls' research - HDU 3294 (Manacher处理回文串)