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\n";
        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<<"\n";
        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。

 

posted @ 2020-05-20 09:52  浪在ACM  阅读(96)  评论(0编辑  收藏  举报