hdu 3294 manacher 求回文串
2015-03-03 17:39
253 查看
感谢:
http://blog.csdn.net/ggggiqnypgjg/article/details/6645824/
O(n)求给定字符串的以每个位置为中心的回文串长度。
中心思想:每次计算位置i的答案时,利用已经算出的1~i-1位置的答案。
View Code
http://blog.csdn.net/ggggiqnypgjg/article/details/6645824/
O(n)求给定字符串的以每个位置为中心的回文串长度。
中心思想:每次计算位置i的答案时,利用已经算出的1~i-1位置的答案。
#include <cstdio> #include <cstring> #include <iostream> #define maxn 222222 using namespace std; int n, ans; char s[maxn]; int r[maxn]; int main() { while( scanf( "%s", s )==1 ) { n = strlen(s); for( int i=n; i>=0; i-- ) { s[(i<<1)+2] = s[i]; s[(i<<1)+1] = '#'; } s[0] = '^'; s[n+n+2] = '$'; for( int i=2,id=1; i<=n+n+1; i++ ) { if( id+r[id]>=i ) r[i] = min( r[id+id-i], id+r[id]-i ); else r[i] = 0; while( s[i-r[i]-1]==s[i+r[i]+1] ) r[i]++; if( id+r[id]<i+r[i] ) id=i; } ans = 0; for( int i=1; i<=n+n+1; i++ ) ans = max( ans, r[i] ); printf( "%d\n", ans ); } }
View Code
相关文章推荐
- HDU 3294 Girls' research(Manacher算法求回文串左右端点)
- Girls' research - HDU 3294 (Manacher处理回文串)
- Hdu 3294 Girls' research (manacher 最长回文串)
- hdu 3068 最长回文串 o(n) Manacher 算法
- HDU 3294 Girls' research (manacher模板题)
- HDU 3068_求最大回文串_manacher算法_O(n)
- HDU 5371 Hotaru's problem (Manacher,回文串)
- HDU - 3294 Girls' research(manacher)
- HDU 3294 manacher
- [manacher] hdu 3294 Girls' research
- HDU 3294 (Manacher) Girls' research
- HDU 3294 Manacher模版题
- HDU 3068 回文串--Manacher
- HDU 3294 Girls' research (manacher)
- Hdu 5340 Three Palindromes 最大回文串 Manacher
- manacher算法求最长回文串 和 hdu 3068 最长回文串
- hdu 3294 Girls' research(manacher)
- HDU 3068 回文串--Manacher
- HDU - 3294 Girls' research(manacher)
- hdu----(4513)吉哥系列故事——完美队形II(manacher(最长回文串算法))