求助!实在不知道哪里错了!!

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

dongtian @ 2022-12-29 11:31:53

#include<stdio.h>
int a[1000][1000];
int main() {
    int i,j,l,m,temp,tmp,k,y=0,u;
    scanf("%d%d",&l,&m);
    for(i=0; i<m; i++)
        for(j=0; j<2; j++)
            scanf("%d",&a[i][j]);
    temp=a[0][0];
    tmp=a[0][1];
    for(i=0; i<m; i++)
        for(j=i; j<m; j++) {
            if(a[i][0]>a[j][0]) {
                temp=a[i][0];
                tmp=a[i][1];
                a[i][0]=a[j][0];
                a[i][1]=a[j][1];
                a[j][0]=temp;
                a[j][1]=tmp;
            }
        }
    for(i=0; i<m; i++) {
        if(a[i+1][0]<=a[i][1])
            a[i+1][0]=a[i][1]+1;
    }
    for(i=0; i<m; i++) {
        k=a[i][1]-a[i][0]+1;
        if(k>0)
            y+=k;
    }
    u=l+1-y;
    printf("%d",u);
    return 0;
}

by Jasonshan10 @ 2023-01-12 20:09:45

写的过于复杂 详见此代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int l,m,ans=0;
    scanf("%d %d",&l,&m);
    const int MAXN=l+1;
    int t[MAXN]={0};//存为一个桶,0为不用移,1为要移;
    for(int i=0;i<m;++i){
        int a,b;
        scanf("%d%d",&a,&b);
        for(int i=a;i<=b;++i){
            t[i]=1;
        }
    }
    for(int i=0;i<=l;++i){
        if (t[i]==0){
            ans++;
        }
    }
    printf("%d",ans);
    return 0;
}

|