codeforce 789 div2 b2

#pragma GCC optimize(2)
#pragma GCC optimize(1)
#include<bits/stdc++.h> 
typedef long long ll;
typedef unsigned long long ull;
const ull base=131;
#define MAX 200009
#define PI 3.141592653589793
using namespace std;
inline void solve(){
    string op;int len;cin>>len>>op;
    int ans=0,zd=0;
    for(int i=0;i<len-1;i+=2){
        if(op[i]!=op[i+1]) op[i]=op[i+1]='2',ans++;
    }
    char last='2';
    for(int i=0;i<len;i++){
        if(op[i]=='2') continue;
        if(op[i]!=last) last=op[i],zd++;
    }
    cout<<ans<<' '<<max(1,zd)<<endl;
}
int main()
{
    int sum;cin>>sum;
    while(sum--)
    {
        solve();
    }
 } 
 

看题解想出思路来了(然后卡在代码实现上,老想着双指针统计一下

之后看了下大佬的题解惊呼还可以这样

实际上只要无视01段落然后每次更新下状态即可

posted on 2022-05-09 11:14  zesure  阅读(23)  评论(0编辑  收藏  举报

导航