90分,第一个测试点WA

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

spessert @ 2024-03-24 09:55:42

#include<iostream>  
using namespace std;  
bool num[10000];  //有树为1,无数为0 
int main(){  
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        num[i]=true;
    }
    for(int i=0;i<m;i++){
        int a,b;
        cin>>a>>b;
        for(int j=a;j<=b;j++){
            num[j]=false;
        } 
    }
    int count=0;
    for(int i=1;i<=n;i++){
        if(num[i]==true){
            count++;
        }
    }
    cout<<count+1;
    return 0;  
}

by peng_qian_xin @ 2024-03-24 10:12:09

1.有可能n为10000,这样的话num[n]会爆掉 2.最后应该是for(int i = 0;i <= n;i++),而不是for(int i = 1;i <= n;i++)...... cout << count + 1;,因为0那块不一定没种树,要是种了树的话,就会多一个,你只掉一个点是因为数据比较弱


by peng_qian_xin @ 2024-03-24 10:12:56

@spessert 过来看一下


by Fish_Love_Water @ 2024-03-24 10:13:14

@spessert 第7行初始化i应该等于018行同理

0坐标点也可以种一棵树的

以后做题其实一般来说答案不可能要再去+1才能得正确答案的( 求关


by spessert @ 2024-03-24 14:24:36

@Fish_Love_Water 懂了,是0那一块没考虑到,感谢大佬,已关


|