专栏文章

题解:CF2147C Rabbits

CF2147C题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@minkta0p
此快照首次捕获于
2025/12/02 04:02
3 个月前
此快照最后确认于
2025/12/02 04:02
3 个月前
查看原文
赛时未通过。
但是个人感觉就是纯思维题,做这种题目思维要打开。
我们思考兔子怎么才不能跳到花坛,对于这样偶数个 00 的子串,我们可以构造两个兔子面对面,对于 0101010101010101,我们可以构造两个兔子往一个花坛里面跳。
那么也就是说我们可以快速判断两个兔子是否合法,具体的我们可以找这种 0101 交替模式的子字符串,判断该子字符串具有奇数个零。
CPP
#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;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...