标签:des style blog http color os io strong for
Palindrome
Time Limit:15000MS
Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
Sample Input
abcbabcbabcba abacacbaaaab END
Sample Output
Case 1: 13 Case 2: 6
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <climits> 7 #include <vector> 8 #include <queue> 9 #include <cstdlib> 10 #include <string> 11 #include <set> 12 #include <stack> 13 #define LL long long 14 #define pii pair<int,int> 15 #define INF 0x3f3f3f3f 16 using namespace std; 17 const int maxn = 2000100; 18 char tmp[maxn],str[maxn]; 19 int p[maxn]; 20 void manacher(char *s,int n){ 21 int maxlen = 0,id; 22 id = p[0] = 0; 23 for(int i = 1; i < n; i++){ 24 if(p[id]+id > i) p[i] = min(p[2*id-i],p[id]+id-i); 25 else p[i] = 1; 26 while(i-p[i] >= 0 && s[i-p[i]] == s[i+p[i]]) p[i]++; 27 if(id+p[id] < i+p[i]) id = i; 28 if(p[i] > maxlen) maxlen = p[i]; 29 } 30 printf("%d\n",maxlen-1); 31 } 32 int main() { 33 int i,j,cs = 1; 34 while(~scanf("%s",tmp)){ 35 if(!strcmp(tmp,"END")) break; 36 for(i = j = 0; tmp[i]; i++ ,j += 2){ 37 str[j] = ‘#‘; 38 str[j+1] = tmp[i]; 39 } 40 str[j++] = ‘#‘; 41 str[j] = ‘\0‘; 42 printf("Case %d: ",cs++); 43 manacher(str,j); 44 } 45 return 0; 46 }
标签:des style blog http color os io strong for
原文地址:http://www.cnblogs.com/crackpotisback/p/3934746.html