不知为何错求助!
查看原帖
不知为何错求助!
1237323
zhutongxuan楼主2024/2/26 22:12
#include<bits/stdc++.h>
using namespace std;

int main(){
	int t;
	for(cin>>t;t;t--){
		int n,m,cnt,l,r;
		string s;
		cin>>n>>m>>s;
		cnt = count(s.begin(),s.end(),'1');
		if(cnt == 0){
			if(s.size() <= n) cout<<"Yes"<<endl;
			else cout<<"No"<<endl;
		}
		else if(cnt == 1){
			for(int i = 0;s[i] != '1';i++){
				l++;
			}
			r = s.size() - l - 1;
			if(max(l,r) <= n) cout<<"Yes"<<endl;
			else cout<<"No"<<endl;
		}
		else{
			vector<int> p,q;
			p.clear();
			q.clear();
			bool flag = 1;
			for(int i = 0;i < s.size();i++) if(s[i] == '1') p.push_back(i);
			for(int i = 1;i < p.size();i++) q.push_back(p[i] - p[i - 1] - 1);
			for(int i = 1;i < q.size();i++) if(q[i] != q[i - 1]) flag = 0;
			int delta = q[0];
			l = p[0];
			r = s.size() - p.back() - 1;
			if(flag && max(l,r) <= delta && delta <= n) cout<<"Yes"<<endl;
			else cout<<"No"<<endl;
		}
	}
	return 0;
}
2024/2/26 22:12
加载中...