B. Reverse Binary Strings

链接:https://codeforces.com/contest/1437/problem/B
一看题便知道这题存在什么规律(别马后炮行不行啊喂....)
引入:意识到只有连续的1或者连续的0的时候才会去进行操作,如何消去连续的1呢?去找以0为端点,以当前1为端点的段,然后找个段调个头。同理对于0。为了使得操作的次数最少?我们让这俩操作一起做。
做法:
对于当前的连续1,我们去后面找到一段连续0,然后以它们为端点的段进行掉头操作。
这样应该是两两配对的,这样应该是两两配对的,如果有剩余的话,需要向上取整,可以理解为与整个串的端点的段进行掉头操作。

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

int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        int n, cnt = 0;
        cin >> n;
        string s;
        cin >> s;
        for(int i = 1; i < n; i++) {
            if(s[i] == s[i-1]) {
                cnt++;
            }
        }
        if(cnt & 1) cout << cnt/2 + 1 << endl;
        else cout << cnt/2 << endl;
    }
}
全部评论

相关推荐

仁者伍敌:实习生要工作经验,工作要实习经验
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务