这是一道难度800的题目,难度不高哈。

原理:其实很简单直接分情况即可,首先最简单的就是全1或者全0,直接不需要调整输出Yes即可。

其次如果字符串长度是奇数,我们总能发现可以相互抵消,奇数一定是一个偶数加上一个奇数得来的,这里奇数偶数是指字符串中'0'或'1'的个数。那么有一个为0数,那么总能把偶数移到一起,两两消除都变化成另一个。例如10101->10011->11111

最后如果字符串长度是偶数的话,那必须保证'1'和'0'的个数是偶数,保证其能全部消除。

其次都输出"No"

说到这里是不是发现有更简单的方法除去全0或者全1的情况,只要'1'和'0'个个数有一个为偶数就能满足条件,代码还能再简化!(通过变换将0都移到一起,1都移到一起,偶数全部抵消即可。)(cnt_1%2!=0||cnt_0%2!=0)输出Yes即可,简化在第二个

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
    int cnt_1=0,cnt_0=0;
    string s;
    cin>>s;
    for(int i=0;i<s.length();i++){
        if(s[i]=='1'){
            cnt_1++;
        }else cnt_0++;
    }
    if(cnt_1==s.length()||cnt_0==s.length()){
        cout<<"Yes"<<endl;//一开始就不需要操作
    }else if(s.length()%2!=0){//因为奇数一定是一奇一偶相加,偶数个的直接移到一起全部变换即可
        cout<<"Yes"<<endl;//是奇数可以实现调整
    }else if(s.length()%2==0&&cnt_0%2==0){
        cout<<"Yes"<<endl;
    }else{
        cout<<"No"<<endl;
    }
}

signed main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int q;
    cin>>q;
    while(q--)
        solve();
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
    int cnt_1=0,cnt_0=0;
    string s;
    cin>>s;
    for(char c:s){
        if(c=='1'){
            cnt_1++;
        }else cnt_0++;
    }
    if(cnt_1%2==0||cnt_0%2==0){
        cout<<"Yes"<<endl;
    }else{
        cout<<"No"<<endl;
    }
}

signed main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int q;
    cin>>q;
    while(q--)
        solve();
    return 0;
}