CF2147C Rabbits

https://codeforces.com/problemset/problem/2147/C
我们思考兔子怎么才不能跳到花坛,对于这样偶数个 0 的子串,我们可以构造两个兔子面对面,对于 01010101,我们可以构造两个兔子往一个花坛里面跳。

那么也就是说我们可以快速判断两个兔子是否合法,具体的我们可以找这种 01 交替模式的子字符串,判断该子字符串具有奇数个零。

#include<bits/stdc++.h>
//#define int long long
#define rep(i,l,r) for(int i=l;i<=r;++i)
#define per(i,r,l) for(int i=r;i>=l;--i)
using namespace std;
void solve(){
    string s;
    int n; cin>>n; cin>>s;
    int len=s.size();
    for(int i=0,j;i<len;i=j+1){
        j=i;
        for(;j+1<len&&s[j]!=s[j+1];++j);
        if(s[j]=='1'&&s[i]=='1'&&(((j-i)/2)&1)){
            cout<<"NO\n"; return;
        }
        // cout<<j<<' ';
    }
    cout<<"YES\n";
}
signed main() {
    int Q; cin>>Q;
    for(;Q;--Q){
        solve();
    }
    return 0;
}
posted @ 2026-01-16 15:58  曾翎一  阅读(0)  评论(0)    收藏  举报