究极无敌螺旋升天TLE 13个点的可爱马拉车模板题求条
  • 板块灌水区
  • 楼主tianyk
  • 当前回复7
  • 已保存回复8
  • 发布时间2024/10/10 09:15
  • 上次更新2024/10/10 16:07:39
查看原帖
究极无敌螺旋升天TLE 13个点的可爱马拉车模板题求条
877101
tianyk楼主2024/10/10 09:15

rt,题目是P3805

题目传送门

#include <bits/stdc++.h>
using namespace std;
const int N = 2.2e7 + 5; //1.1e7*2
int p[N];

int main() {
	freopen("1.in", "r", stdin);
	freopen("1.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	string s, ss = "#";
	cin >> s;
	int l = s.size(), ans = 0;
	for (int i = 0; i < l; i++)
		ss = ss + s[i] + "#";
	//cout << ss << endl;
	int c = 0, r = 0;
	l = (l << 1 | 1);
	for (int i = 0; i < l; i++) {
		if (i < r)
			p[i] = min(p[2 * c - i], r - i);
		else
			p[i] = 1;
		while ((i + p[i] < (l << 1 | 1) ) && (i - p[i] >= 0) && (ss[i + p[i]] == ss[i - p[i]]) )
			p[i]++;
		if (i + p[i] > r)
			r = i + p[i], c = i;
		ans = max(ans, p[i]);
	}
	cout << ans - 1 << "\n";
	return 0;
}
2024/10/10 09:15
加载中...