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;
}

浙公网安备 33010602011771号