求调 WA 11
查看原帖
求调 WA 11
1369607
luckyqwq楼主2024/11/18 16:58
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e6 + 10;
int n, cnt, res, b;
string s;
int p[N];
inline void read()
{
	char c = getchar ();
	s[0] = '(', s[1] = ')';
	cnt = 1;
	while (c < 'a' || c > 'z') c = getchar();
	while (c >= 'a' && c <= 'z') s[ ++ cnt] = c, s[ ++ cnt] = ')', c = getchar();
}
signed main()
{
	cin >> n;
	read();
	int l = 1, r = 0, mid = 0;
	for (l = 1;l <= cnt; ++ l)
	{
		if (l <= r) p[l] = min (r - l + 1, p[(mid << 1) - l]);
		while (s[l - p[l]] == s[l + p[l]]) ++ p[l];
		if (p[l] + l > r) mid = l, r = p[l] + l - 1;
		bool f = ((p[l] - 1) + l == cnt);
		if (p[l] > res && f)
		{
			b = l;
			res = p[l];
		}
	}
	cout << (cnt - 1) / 2 - res + 1 <<"\n";
	return 0;
}

WA 11

2024/11/18 16:58
加载中...