题解:CF1902A. Binary Imbalance
先给个题目链接。
题目翻译(由“CodeForces Better!”和“DeepL 翻译”提供):
我们知道,如果初始字符串中“0”的个数就大于“1”的个数,答案肯定是YES,否则,对于其他情况,肯定需要添加“0”使得“0”的个数大于“1”的个数。要想添加“0”,则必须满足“在字符串中存在相邻两个不相等的字符”,不难得出一定是一个“1”和一个“0”(即“10”或“01”)。如果在这样两个字符中间添加一个“0”,就变成了“100”或“001”,显然一定仍旧存在一个“10”或“01”,因此只要字符串中包含“10”或者“01”答案就是YES,否则就是NO。
由于简单直接放代码。
#include<bits/stdc++.h>
using namespace std;
string s="";
int n=0,t=0,x=0,y=0;
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
cin>>s;
x=0;
y=0;
for(char i:s){
if(i=='0'){
x++;
}else{
y++;
}
}
if(x>y||s.find("01")!=-1||s.find("10")!=-1){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}