The longest palindrome
Topic Transmission: HDU-3068-the longest palindrome
AC Code:
#include <map>#include <set>#include <list>#include <cmath>#include <deque>#include <queue>#include <stack>#include <bitset>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <complex>#include <cstdlib>#include <cstring>#include <fstream>#include <sstream>#include <utility>#include <iostream>#include <algorithm>#include <functional>#define LL Long Long#define INF 0x7fffffffusing namespace STD;Chars[250000];Charstr[250000];intp[250000];intlen_s;intLEN_STR;voidGet_str () {str[0] =' $ '; str[1] =' # '; for(inti =1; I <= len_s; i + +) {Str[i *2] = S[i]; Str[i *2+1] =' # '; } str[len_s *2+2] =' + '; LEN_STR = len_s *2+1;}voidSolve () {intIdintMX =0; for(inti =1; I <= len_str; i + +) {if(mx > i) {P[i] = min (P[id *2-i], mx-i); }ElseP[i] =1; while(Str[i + p[i]] = = Str[i-p[i]]) p[i] + +;if(P[i] + i > MX) {mx = p[i] + i; id = i; } }}intMain () { while(scanf('%s ', S +1) = EOF) {len_s =strlen(S +1); Get_str (); Solve ();intAns =0; for(inti =1; I <= len_str; i + +) {ans = ans > p[i]? ans:p[i]; }printf("%d\n", ans-1); }return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Manacher algorithm of Palindrome string