90求解有一个WA其他AC

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

shao3377168499 @ 2022-10-28 14:45:39

#include<iostream>
using namespace std;
int main() {
    int l[10000],m,n=0,L,j,k,y=0;
    cin >> L>>m;
    for (int i = 0; i <= L; i++)
    {
        l[i]=n;
        n++;
    }
    for (int i = 0; i < m; i++)
    {
        cin >> j >> k;
        for(int d=0;d<=L;d++)
        if (j <= l[d] && l[d] <= k)
        {
            l[d] = 0;
        }
    }
    for (int x = 0; x <= L; x++)
    {
        if (l[x] != 0)
            y++;
    }
    cout << y+1;
    return 0;
}

by Ykmirror @ 2022-10-28 15:03:19

看看我的@shao3377168499

#include<bits/stdc++.h>
using namespace std;
int main(){
    int l,m;
    int cnt=0;
    cin>>l>>m;
    int a[l+10];
    for(int i=0;i<=l;i++){
        a[i]=1;
    }
    for(int i=1;i<=m;i++){
        int head,tail;
        cin>>head>>tail;
        for(int j=head;j<=tail;j++){
            a[j]=0;
        }
    }
    for(int i=0;i<=l;i++){
        if(a[i]==1){
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

不是大佬(悲) 求互关qwq


by VitrelosTia @ 2022-10-28 15:08:31

@mky12345 贴代码对于他没有任何帮助


by WZWZWZWY @ 2022-10-28 15:13:45

问题出在这里:

    for (int i = 0; i <= L; i++)
    {
        l[i]=n;
        n++;
    }

想想i=0时l[i]的值.是的,n一开始为0,所以 l[i]的值就变成了0.相当于你一开始就把这棵树移走了。想想应该怎么做

@shao3377168499


|