HDU 3068 Manacher 模板题
2016-08-08 11:59
225 查看
题目链接
题意: 求字符串的最长回文长度
代码:
题意: 求字符串的最长回文长度
代码:
#include <cstdio> #include <iostream> #include <vector> #include <cstring> #include <algorithm> #define sf scanf #define pf printf using namespace std; const int maxn = 110000 * 2 + 50; int dis[maxn]; char str1[maxn],str2[maxn]; int main(){ while(~sf("%s",str1)){ int len = strlen(str1); str2[0] = '$'; char* str_a = str2 + 1; for(int i = 0;i <= len;++i){ str_a[i * 2] = '#'; str_a[i * 2 + 1] = str1[i]; } // puts(str2); int id = 0, mx = 1,len2 = strlen(str2); int ans = 0; for(int i = 1;i < len2;++i){ if(mx > i){ dis[i] = (dis[id * 2 - i] < (mx - i) ? dis[2 * id - i] : (mx - i)); } else dis[i] = 1; while(str2[i - dis[i]] == str2[i + dis[i]]) dis[i]++; if(i + dis[i] > mx){ mx = i + dis[i]; id = i; } ans = max(ans,dis[i]); } pf("%d\n",ans - 1); } 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