• 20200414(ABC)题解 by 马鸿儒 苏用


    A、C题:马鸿儒

    A题解:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int bk[1005][1005];
    int main()
    {
        ios::sync_with_stdio(0);
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            int l,r;
            cin>>l>>r;
            for(int j=l;j<r;j++) bk[j][j+1]++;
        }
        for(int i=0;i<m;i++) if(!bk[i][i+1]) return cout<<"NO",0;
        cout<<"YES";
    }

    C题解:

    #include <bits/stdc++.h>
    using namespace std;
    int a[100005];
    int main()
    {
        ios::sync_with_stdio(0);
        int n,f=0,sum=0,ff=0;
        cin>>n;
        for(int i=0;i<=n;i++) 
        {
            cin>>a[i];
            sum+=a[i];
            if(a[i]>1)
            {
                if(!f) f=i;
            }
        }
        for(int i=0;i<n;i++) if(a[i]>=2&&a[i+1]>=2) ff=1;
        if(!f||!ff) cout<<"perfect";
        else
        {
            cout<<"ambiguous
    ";
            for(int i=0;i<=1;i++)
            for(int j=1;j<=a[i];j++)
            cout<<i<<" ";
            int maxn=0;
            for(int i=2;i<=n;i++)
            {
                maxn+=a[i-2];
                for(int j=1;j<=a[i];j++)
                cout<<maxn+1<<" ";
            }
            cout<<"
    ";
            for(int i=0;i<=1;i++)
            for(int j=1;j<=a[i];j++)
            cout<<i<<" ";
            maxn=1;
            for(int i=2;i<=n;i++)
            {
                int r1=maxn+a[i-1];
                int r2=maxn+1,r3=maxn+1;
                for(int j=1;j<=a[i];j++)
                {
                    if(r3>r1) r3=r2;
                    cout<<r3<<" ";
                    r3++;
                }
                maxn+=a[i-1];
            }
        }
        
    }

    B题:苏用

    题解:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    const int maxn=1e4+10;
    using namespace std;
    int n,a[maxn],b[maxn],ans;
    int main(){
        cin>>n;
        for (int i=2; i<=n; i++) {
            int x;cin>>x;
            a[i]=x;
        }
        for (int i=1; i<=n; i++) {
            int x;cin>>x;
            b[i]=x;
        }
        for (int i=2; i<=n; i++) {
            if (a[i]!=0&&b[i]!=b[a[i]]) ans++;
        }
        cout<<ans+1<<endl;
    }
    //考虑到从最后开始的过程,我们将从树中“删除”任何子树,其最高顶点的祖先的颜色与最高顶点的颜色不同,
    //并且子树中所有顶点的颜色都是相同的。因此,我们可以证明,答案是边的数目,其末端有不同的颜色+ 1。
    
  • 相关阅读:
    CSS:CSS 组合选择符
    CSS:CSS 布局
    CSS:CSS Float(浮动)
    CSS:CSS Positioning(定位)
    CSS:CSS Display(显示) 与 Visibility(可见性)
    CSS:CSS 尺寸 (Dimension)
    CSS:CSS 分组 和 嵌套 选择器
    CSS:CSS padding(填充)
    CSS:CSS margin(外边距)
    linux概念之/proc与/sys
  • 原文地址:https://www.cnblogs.com/QLU-ACM/p/12921858.html
Copyright © 2020-2023  润新知