20分,help me!已经和题解一模一样了
查看原帖
20分,help me!已经和题解一模一样了
1445252
ljy15208198577楼主2025/5/10 10:46
#include<bits/stdc++.h>
using namespace std;
int main(){
    long long t,n,m,c=0,a[1000005],wz[1000005],l;
    char ch;
    bool f=true;
    cin>>t;
    while(t--){
        cin>>n>>m;
        for(long long i=1;i<=m;i++){
            cin>>c;
            a[i]=c-'0';
            if(a[i]==1)wz[++c]=i;
        }
        if(c==0){
            if(m>n)cout<<"No"<<endl;
            else cout<<"Yes"<<endl;
            continue;
        }
        if(c==1){
            if(wz[1]-1>n || (m-wz[1])>n)cout<<"No"<<endl;
            else cout<<"Yes"<<endl;
            continue;
        }
        l=wz[2]-wz[1]-1;
        if(l>n){
            cout<<"No"<<endl;
            continue;
        }
        if(wz[1]-1>l){
            cout<<"No"<<endl;
            continue;
        }
        for(long long i=3;i<=c;i++){
            if(wz[i]-wz[i-1]-1!=l){
                cout<<"No"<<endl;
                f=false;
                break;
            }
        }
        if(!f)continue;
        if(m-wz[c]>l){
            cout<<"No"<<endl;
            continue;
        }
        if(f)cout<<"Yes"<<endl;
    }
}
    
2025/5/10 10:46
加载中...