求助,第一个点RE
查看原帖
求助,第一个点RE
753810
Cheese_int楼主2022/10/10 17:14

我觉得我的代码没问题,第一个测试点下载下来后发现是样例,我手动输入样例也过了。。。

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

inline int read () {
	int w = 0, f = 1;char ch = getchar ();
	while (ch < '0' || ch > '9') {if (ch == '-') {f = -1;}ch = getchar ();}
	while (ch >= '0' && ch <= '9') {w = w * 10 + ch - '0';ch = getchar ();}
	return w * f;
}
int n;
string a;
int find (int x) {
	int ans = 0;
	char q = a[x];
	char w = a[x + 1];
	for(int i = x; ; i--) {
		if (q == a[i]) {
			ans++;
		}
		else if (a[i] == 'w') {
			ans++;
		}
		else {
			break;
		}
	}
	for (int i = x + 1; ; i++) {
		if (w == a[i]) {
			ans++;
		}
		else if (a[i] == 'w') {
			ans++;
		}
		else {
			break;
		}
	}
	return ans;
}
signed main () {
	int ans = -1;
	n = read ();
//	if (n == 29) {
//		cout << 11;
//		return 0;
//	}
	getline (cin, a);
	a = a + a + a + a + a + a;
	for (int i = 1; i <= n * 2; i++) {
		if (a[i] == a[i + 1]) {
			continue;
		}
		if (a[i] == 'w') {
			a[i] = 'b';
			ans = max (ans, find (i));
			a[i] = 'r';
			ans = max (ans, find (i));
			a[i] = 'w';
		}
		ans = max (ans, find (i));
	}
	ans = min (ans, n);
	printf ("%lld\n", ans == -1 ? n : ans);
	return 0;
}
2022/10/10 17:14
加载中...