令人窒息的奇怪写法(当场T飞
查看原帖
令人窒息的奇怪写法(当场T飞
271238
PluviaLaver楼主2020/12/22 22:28

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也没有,有巨佬帮我看看嘛(狗头)

2020/12/22 22:28
加载中...