hdu 3068(manacher模板)
2017-04-14 13:58
218 查看
https://vjudge.net/problem/19933/origin
中文题意,裸的manacher模板
上代码
中文题意,裸的manacher模板
上代码
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; const int maxn=110010; char Mp[2*maxn]; int Ma[2*maxn]; void manacher(int len,char a[]){ int l=0; Mp[l++]='$'; Mp[l++]='#'; for(int i=0;i<len;i++){ Mp[l++]=a[i]; Mp[l++]='#'; } Mp[l]=0; int mx=0,id=0; for(int i=0;i<l;i++){ Ma[i]=i>mx?1:min(Ma[2*id-i],mx-i); while(Mp[i+Ma[i]]==Mp[i-Ma[i]])Ma[i]++; if(mx<i+Ma[i]){ mx=i+Ma[i]; id=i; } } } int main(){ char a[maxn]; while(~scanf("%s",a)){ int len=strlen(a); manacher(len,a); int ans=0; for(int i=0;i<len*2+2;i++){ ans=max(ans,Ma[i]-1); } printf("%d\n",ans); } return 0; }
相关文章推荐
- 【Manacher模板】HDU 3068——求最长回文子串
- hdu 3068 最长回文 【Manacher求最长回文子串,模板题】
- hdu 3068 最长回文 (manacher模板)
- 【无聊放个模板系列】HDU 3068 MANACHER
- HDU 3068 最长回文 (Manacher 模板题)
- HDU - 3068 最长回文(manacher模板题)
- HDU 3068 Manacher 模板题
- 最大算法【Manacher模板】HDU 3068——求最长回文子串
- 【HDU 3068】【manacher模板题】最长回文
- HDU 3068 最长回文 【Manacher模板】
- hdu 3068 最长回文_Manacher模板
- hdu 3068 最长回文 【Manacher求最长回文子串,模板题】
- hdu 3068 最长回文 manacher
- hdu 3068 4513 manacher
- hdu 4513 3068 Manacher算法--O(n)回文子串算法
- hdu 3068 最长回文 manacher
- hdu-3068 最长回文 【Manacher算法】
- HDU 3068 回文串--Manacher
- HDU 3068(最长回文-manacher)[Template:manacher]
- ural1297 Palindrome,hdu 3068 最长回文,Manacher