有没有打这个比赛的大佬帮忙康康代码,样例过了,用标程造的样例也过了。
题目图片:
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;
}
求调感谢。