rt,帮同学看代码,直接T飞了,代码如下
#include <map>
#include <set>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <cmath>
#include <cctype>
#include <vector>
#include <bitset>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1.1e7 + 7;
int manacher_read(char s[]) {
s[0] = '~';
s[1] = '|';
int len = 1;
char c = getchar();
while('a' > c || c > 'z') {
c = getchar();
}
while('a' <= c && c <= 'z') {
s[++ len] = c;
s[++ len] = '|';
c = getchar();
}
return len;
}
char s[N << 1];
int n;
int p[N << 1];
int manacher() {
int ans = 0,r = 0,mid = 0;
for(int i = 0;i <= n;++ i) {
if(i <= r) {
p[i] = min(p[(mid << 1) - r],r - i + 1);
}
while(s[i - p[i]] == s[i + p[i]]) {
++ p[i];
}
if(p[i] + i > r) {
r = p[i] + i - 1;
mid = i;
}
ans = max(ans,p[i]);
}
return ans - 1;
}
int main() {
n = manacher_read(s);
printf("%d\n",manacher());
return 0;
}
看上去好像没有神马问题的样子,循环也没有太多问题,纯粹的T飞,一个WA也没有,有巨佬帮我看看嘛(狗头)