2025“钉耙编程”暑期联赛(3)1008求助
  • 板块学术版
  • 楼主shensiyuan2011
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/25 22:26
  • 上次更新2025/7/26 12:30:28
查看原帖
2025“钉耙编程”暑期联赛(3)1008求助
653212
shensiyuan2011楼主2025/7/25 22:26

有没有打这个比赛的大佬帮忙康康代码,样例过了,用标程造的样例也过了。
题目图片: https://cdn.luogu.com.cn/upload/image_hosting/c4f4kdpc.png
我的代码:

#include <bits/stdc++.h>
using namespace std;
string s, s1, ans;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	int t;
	cin >> t;
	while (t--) {
		int n;
		cin >> n;
		cin >> s;
		ans = "";
		int js = 0;
		int cnt1 = 0;
		s1 = s;
		for (int i = 0; i < n; i++)
			ans += '0' + i % 2;
		if (s1[0] != ans[0] && s1[n - 1] != ans[n - 1] && s1[n - 1] != s1[0]) {
			swap(s1[0], s1[n - 1]), cnt1++, js += 2;
		}
		for (int i = 0; i < n; i++) {
			if (s1[i] != ans[i])
				js++;
			if (i + 1 < n) {
				if (s1[i] != ans[i] && s1[i + 1] != ans[i + 1])
					swap(s1[i], s1[i + 1]), cnt1++, js++;
			}
		}
		cnt1 = js - cnt1;
		s1 = s;
		js = 0;
		int cnt2 = 0;
		ans = "";
		for (int i = 1; i <= n; i++)
			ans += ('0' + i % 2);
		if (s1[0] != ans[0] && s1[n - 1] != ans[n - 1] && s1[n - 1] != s1[0]) {
			swap(s1[0], s1[n - 1]), js += 2, cnt2++;
		}
		for (int i = 0; i < n; i++) {
			if (s1[i] != ans[i])
				js++;
			if (i + 1 < n) {
				if (s1[i] != ans[i] && s1[i + 1] != ans[i + 1])
					swap(s1[i], s1[i + 1]), js++, cnt2++;
			}
		}
		cnt2 = js - cnt2;
		cout << min(cnt2, cnt1) << '\n';
	}
	return 0;
}

求调感谢。

2025/7/25 22:26
加载中...