70分,前三个WA,能帮忙看下哪错了吗?

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

wjb1227 @ 2024-01-15 21:30:30

#include<iostream>
using namespace std;

int main()
{
    int l,m,u,v,n;
    cin>>l>>m;

    int a[l]={0};

    for(int i=1;i<=m;i++)
    {
        cin>>u>>v;

        for(int j=u;j<=v;j++)
        {
            a[j]=1;
        }

    }

    n=0;
    for(int k=0;k<=l;k++)
    {
        if(a[k]==0)
        {
            n++;
        }
    }

    cout<<n;

    return 0;
}

by tangml @ 2024-01-15 21:39:24

#include<iostream>
using namespace std;

const int N=1e5+10;
int a[N];
int main()
{
    int l,m,u,v,n;
    cin>>l>>m;

    for(int i=1;i<=m;i++)
    {
        cin>>u>>v;

        for(int j=u;j<=v;j++)
        {
            a[j]=1;
        }

    }

    n=0;
    for(int k=0;k<=l;k++)
    {
        if(a[k]==0)
        {
            n++;
        }
    }

    cout<<n;

    return 0;
}

是不能用变量定义数组的


by Hollow_Knight @ 2024-01-15 22:37:36

@wjb1227 数组的长度是从0开始的,定义一个长度为 n 的数组,下标就是0~n-1 ,而你的代码中从0访问到 n ,超出了数组范围,值默认为0,所以只需要把定义数组的代码改成:

int a[10000000];

就行了。


by Hollow_Knight @ 2024-01-15 22:38:56

顺便求个关注


by zhang0430 @ 2024-03-06 19:38:03

@wjb1227

#include<bits/stdc++.h>

using namespace std;
int main(){
    int l,m;
    cin >> l >> m;

    int shen = l + 1;
    int tr[shen] = {0};

    while(m--){
        int u,v;
        cin >> u >> v;

        for(int i = u;i <= v;i++){
            if(tr[i] == 0){
                tr[i] = 1;

                shen -= 1;
            }
        }
    }
    cout << shen;

    return 0;
}

|