TLE+RE
查看原帖
TLE+RE
213218
蒟蒻CGZ楼主2020/12/28 22:43

下面就是 Manacher 的模板写法……为什么有两个测试点RE, 还有四个TLE?

#include <bits/stdc++.h>
using namespace std;

const int N = 22000003;
char a[N];
int len[N], ans = 1, n, maxx, maxn;

int main() {
	a[0] = '$'; a[n = 1] = '#';
	char ch = getchar();
	while('a' <= ch && ch <= 'z') {
		a[++ n] = ch;
		a[++ n] = '#';
		ch = getchar();
	}
	maxn = maxx = 1;
	for (int i = 1; i <= n; ++ i) {
		len[i] = min(len[(maxn << 1) - i], maxn - i);
		while(a[i - len[i]] == a[i + len[i]]) 
			len[i] ++;
		if(i + len[i] > maxn) {
			maxn = i + len[i];
			maxx = i;
		}
		ans = max(ans, len[i] - 1);
	}
	printf("%d\n", ans);
	return 0;
}
 
2020/12/28 22:43
加载中...