Codeforces Round #587 (Div. 3)

A. Prefixes

題目鏈接:https://codeforces.com/contest/1216/problem/A

題目大意:

(input)輸入n,表示下一行輸入的字符串的長度,輸入str

通過最少的操作數來達到每偶數段(1~2*n)a的個數和b的個數是相等

解題思路:

簡單的模擬,每次維護長度爲2的區間,如果在這區間中,兩個相同那麼必定要進行一次操作cnt++,改s[i]或s[i+1]無區別,故所有偶數區間都能滿足

#include <bits/stdc++.h>
#define REP(i, a, b) for(int i = a; i < b; i++)
#define REP_(i, a, b) for(int i = a; i <= b; i++)
#define sl(n) scanf("%lld", &n);
#define si(n) scanf("%d", &n);
#define RepAll(a) for(auto x: a)
#define cout(ans) cout << ans << endl;
typedef long long ll;

using namespace std;
int main(){
    ll n, cnt = 0;
    sl(n);
    string s;
    cin >> s;
    for(int i = 0; i < s.size() -  1; i+=2){
        //每兩位每兩位的檢查
        if(s[i] == s[i + 1]){
            cnt++;
            s[i + 1] == 'a' ? s[i+1] = 'b' : s[i+1] = 'a';
        }
    }
    cout << cnt << '\n' << s << endl;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章