zoukankan      html  css  js  c++  java
  • 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。
    
  • 相关阅读:
    第72届奥斯卡最佳动画奖《老人与海》
    关不掉的手机应用程序
    李嘉诚:知识并不一定使你的财富增加
    Linux之父Linus Torvalds谈软件开发管理经验
    Google 正式发布Dart编程语言
    代码本身其实并不重要,重要的是用户
    22个基于HTML5开发的网站
    看看耶鲁大学心态 ,送给正在奋斗的人 !
    用 git 维护 vim 代码
    谈程序语言的设计及程序员心态
  • 原文地址:https://www.cnblogs.com/QLU-ACM/p/12921858.html
Copyright © 2011-2022 走看看