题解:AT_abc174_d [ABC174D] Alter Altar

· · 题解

1.理解题意

题目告诉我们,白石头不能放在红石头左边,也就是只 能放在右边。WW....RR。

这题也就转化成了求把所有红石头,放到左半部分的最小步骤。而我们只需用红石总数减去已经在左边部分的红石头数量就可以了。

2.思路说明

第一行输入 n。

第二行输入 n 个字符。(连在一起)

循环得到 R 的个数。

循环得到已经到位的 R 的个数。

两者相减。

输出差值。

(详见代码)

3.代码实现

#include<bits/stdc++.h>
using namespace std;
#define int long long
char a[200010];
int n,ans=0,sum,ss;
signed main(){
    cin >> n >> a;
    for(int i=0;i<n;i++){
        if (a[i]=='R') sum++;//红石头总数
    }
    for(int i=0;i<sum;i++){//遍历要放红石头的格子
        if (a[i]=='R') ss++;//已经到位置的红石头总数
    }
    ans=sum-ss;//两者相减
    cout << ans;//输出答案
    return 0;
}

码风不是很好看,希望对读者您有所帮助!