标签:only ever inpu ane content comm fine abc sep
http://acm.hdu.edu.cn/showproblem.php?pid=3294
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 5711 Accepted Submission(s): 2117
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #include <algorithm> #include <iostream> #include<cstdio> #include<string> #include<cstring> #include <stdio.h> #include <string.h> #define INF 10000000 using namespace std; char a[200009] , b[400009] , str[200009]; int p[400009]; int num; int main() { char c ; while(~scanf("%c%s" , &c , a)) { int len = strlen(a); int q = c - ‘a‘; memset(str , 0 , sizeof(str)); memset(p , 0 , sizeof(p)); for(int i = 0 ; i < len ; i++) { if(a[i] - q < ‘a‘) { a[i] = a[i] + 26; } a[i] = a[i] - q ; } //printf("%s\n" , a); int l = 0 ; b[l++] = ‘$‘; b[l++] = ‘#‘; for(int i = 0 ; i < len ; i++) { b[l++] = a[i]; b[l++] = ‘#‘; } int mx = - 1 , mid , ans = 0; for(int i = 1 ; i < l ; i++) { if(mx > i) { p[i] = min(p[2*mid-i] , mx - i); } else { p[i] = 1 ; } while(b[i-p[i]] == b[i+p[i]]) { p[i]++; } if(mx < p[i]+i) { mid = i ; mx = p[i] + i; } } int index = 0 , indey = 0; for(int i = 0 ; i < l ; i++) { if(ans < p[i] - 1) { ans = p[i] - 1; index = i ; } } if(ans == 1) { printf("No solution!\n"); } else { int r = (index + ans)/2 - 1; int l = r - ans + 1; printf("%d %d\n" , l , r); for(int i = l ; i <= r ; i++) { printf("%c" , a[i]); } printf("\n"); } getchar(); } return 0 ; }
标签:only ever inpu ane content comm fine abc sep
原文地址:https://www.cnblogs.com/nonames/p/11296274.html