蒟蒻求助

P1047 [NOIP2005 普及组] 校门外的树

tuliwen233 @ 2024-11-05 13:34:01

这样打为什么不行,20pts,哪里错了

#include<bits/stdc++.h>
using namespace std;
struct str{
    int l,r;
}a[110];
bool f[10010];
bool cmp(str x,str y)
{
    return x.l<y.l;
}
int main()
{
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    int n,m,cnt=1;
    cin>>n>>m;
    for(int i=1;i<=m;i++) cin>>a[i].l>>a[i].r;
    sort(a+1,a+m+1,cmp);
    for(int i=1;i<=m;i++)
    {
        for(int j=i+1;j<=m;j++)
        {
            if(a[j].l!=-1 && a[i].r>=a[j].l)
            {
                a[i].r=a[j].r;
                a[j].l=-1;
                cnt++;
            }
        }
    }
    sort(a+1,a+m+1,cmp);
    for(int i=cnt;i<=m;i++)
    {
//      cout<<a[i].l<<' '<<a[i].r<<endl;
        n-=(a[i].r-a[i].l+1);
    }
    cout<<n+1;
    return 0;
}

by tengyuxuan @ 2024-11-15 12:16:25

其实不用那么复杂,我的代码:

#include <bits/stdc++.h>
using namespace std;
struct im{
    int l;
    int r;
};
int main(){
    int n,m,sum=0;
    cin>>n>>m;
    im a[10010];
    for(int i=0;i<m;i++){
        cin>>a[i].l>>a[i].r;
    }
    bool b[10010];
    for(int i=0;i<=n;i++){
        b[i]=true;
    } 
    for(int i=0;i<m;i++){
        for(int j=a[i].l;j<=a[i].r;j++){
            b[j]=0;
        }
    }
    for(int i=0;i<=n;i++){
        if(b[i]==1){
            sum++;
        }
    }
    cout<<sum;
    return 0;
}

by tengyuxuan @ 2024-11-15 12:16:50

@tuliwen233


|