玄关求调
查看原帖
玄关求调
636977
CC__DIAMOND楼主2024/4/25 19:46
    #include <bits/stdc++.h>
    #define BAR cout<<"*******\n";
    #define fst first
    #define snd second
    #define INFILE(x) freopen(x,"r",stdin)
    #define OUTFILE(x) freopen(x,"w",stdout)
    #define INF 0x3f3f3f3f
    #define INFL 0x3f3f3f3f3f3f3f3f
    using namespace std;
    using ll=long long;
    using ul=unsigned long long;
    using ui=unsigned int;
    using db=double;
    using pii=pair<int,int>;
    using pil=pair<int,ll>;
    using pll=pair<ll,ll>;
    const int max_n=2e5+10;
    int a[max_n],sym[max_n];
    void solve(){
        memset(a,0,sizeof(a));
        memset(sym,0,sizeof(sym));
        int n,max_h=0;
        cin>>n;
        sym[1]=n,a[0]=INF;
        bool flag=true;
        for(int i=1;i<=n;++i) {
            cin>>a[i];
            if(a[i]>n){
                flag=false;
            }
            sym[a[i]+1]--,max_h=max(max_h,a[i]);
        }
        if(!flag||max_h!=n) {
            cout << "NO\n";
            return;
        }
        for(int i=1;i<=n;++i) sym[i]+=sym[i-1];
        for(int i=1;i<=n;++i){
            if(sym[i]!=a[i]) {
                cout<<"NO\n";
                break;
            }
        }
        cout<<"YES\n";
    }
    int main() {
        ios::sync_with_stdio(0); cin.tie(0);
        int T;
        cin>>T;
        while(T--) solve();
        return 0;
    }

第二个点过不去,不知道为什么

2024/4/25 19:46
加载中...