70分求助#1#2#9WA

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

CVcoding @ 2023-07-27 21:05:18

#include<iostream>
using namespace std;
int l,m,cnt;
int main(){
    cin>>l>>m;
    int list[l],uv[m][2];//树和马路
    cnt=l;
    for(int i=0;i<m;i++){
        cin>>uv[i][0]>>uv[i][1];//起始和结尾
        //cout<<"try"<<endl;
        }
    for(int i=0;i<m;i++){//每段
        for(int j=uv[i][0];j<uv[i][1];j++)//遍历每段,0是有树,1是无树
            list[j] = 1;
    }
    for(int i=0;i<l;i++)
        if(list[i]==1)
            cnt--;
    cout<<cnt;
    return 0;
}

by xvl_ @ 2023-07-27 21:10:32

list 数组需要初始化


by xvl_ @ 2023-07-27 21:12:39

@CVcoding


by Shaojinshuo @ 2023-07-27 21:34:58

@CVcoding
1.最好把int list[l],uv[m][2];改成int list[1005],uv[105][2];
2.把int list[1005],uv[105][2];移到主函数外面(自动清零)


by CVcoding @ 2023-07-28 19:34:08

#include<iostream>
using namespace std;
int l,m,cnt=1005;
int main(){
    int list[1005],uv[105][2];
    cin>>l>>m;
    //int list[l],uv[m][2];//树和马路
    for(int i=0;i<l;i++)
        list[i] = 1;
    for(int i=0;i<m;i++){
        cin>>uv[i][0]>>uv[i][1];//起始和结尾
        //cout<<"try"<<endl;
        }
    for(int i=0;i<m;i++){//每段
        for(int j=uv[i][0];j<uv[i][1];j++)//遍历每段,1是有树,0是无树
            list[j] = 0;
    }
    for(int i=0;i<l;i++)
        if(list[i]==0)
            cnt--;
    cout<<cnt;
    return 0;
}

@Shaojinshuo

1WA其余都是TLE


by CVcoding @ 2023-07-28 19:44:15

@xvl_ 大佬为什么要把倒数两个for循环的<改成<=?


by xvl_ @ 2023-07-28 20:02:50

@CVcoding

题目中有写


by xvl_ @ 2023-07-28 20:03:05

v$ 有可能等于 $l

|