25pts求调
查看原帖
25pts求调
747009
Spir1t楼主2024/2/27 20:56
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
using db=double;
using ull = unsigned long long;
const ll INF=9223372036854775807;
const int inf=2147483647;
int a[100005];
signed main() {
	//	freopen("123.in","r",stdin);
    //	freopen("123.out","w,",stdout);
    int t;
    cin>>t;
    while(t--){
    	int len,cnt=0;;
    	bool f=true;
    	int n,m;
    	cin>>n>>m;
    	string s;
    	cin>>s;
    	if(s[0]=='0') len=1;
    	else len=0;
    	for(int i=0;i<s.size();i++){
    		if(s[i]=='1') len++;
			else a[len]++,cnt++;
		}
		for(int i=0;i<s.size();i++){
    		if(cnt!=0 and s[i]=='1' and s[i+1]=='1') f=false;
		}
		//for(int i=1;i<=len;i++) cout<<a[i]<<' ';
		int k=0; 
		if(s[0]=='1'){
			k=a[1];
			if(s[s.size()-1]=='0'){
				if(a[len]>a[1]) f=false;
				else{
					for(int i=1;i<len;i++){
						//cout<<a[i]<<' ';
						if(len-1<=1) f=true;
						else if(a[i]!=a[i+1]) f=false;
					}
				}
			}else if(s[s.size()-1]!='0'){
				for(int i=1;i<=len;i++){
					//cout<<a[i]<<' ';
					if(len-1<=1) f=true;
					else if(a[i]!=a[i+1]) f=false;
				}
			}
		}else{
			k=a[2];
			if(s[s.size()-1]=='0'){
				if(a[len]>a[2] or a[1]>a[2]) f=false;
				else{
					for(int i=2;i<len;i++){
						//cout<<a[i]<<' ';
						if(len-1<=1) f=true;
						else if(a[i]!=a[i+1]) f=false;
					}
				}
			}else if(s[s.size()-1]!='0'){
				if(a[1]>a[2]) f=false;
				else{
					for(int i=2;i<=len;i++){
						//cout<<a[i]<<' ';
						if(len-1<=1) f=true;
						else if(a[i]!=a[i+1]) f=false;
					}
				}
			}
		} 
		//cout<<k<<endl;
		//puts("");
		if(!f){
			puts("No");
			continue;
		}else{
			if(k<=n){
				puts("Yes");
				continue;
			}else{
				puts("No");
				continue;
			}
		}
	}
	return 0;
}




2024/2/27 20:56
加载中...