输出不是297就是299,大佬们这咋调

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

Clothax @ 2025-01-04 14:55:11

#include<bits/stdc++.h>
using namespace std;
int main(){
    int l,m;
    cin>>l>>m;
    int s[l]={0};
    int u[m],v[m];
    for(int i=0;i<m;i++){
        cin>>u[i]>>v[i];
    }
    for(int i=0;i<m;i++){
        for(int j=u[i];j<=v[i];j++){
            if(s[j]==0){
                l--;
                s[j]=1;
            }
        }
    }
    cout<<l;
    return 0;
}

用的标记法


by Clothax @ 2025-01-04 14:57:13

题目没完全看懂就做了,见谅


by linanchen @ 2025-01-04 15:01:44

将你的答案+1并将你的s数组开大至s[l+1],因为0~l 共有 l+1 个整数点。


by Clothax @ 2025-01-04 15:38:49

@linanchen 按您的方法修改后得了90分,测试点1错了,可以麻烦再看一下吗,谢谢


by linanchen @ 2025-01-04 15:42:07

@Clothax 我写的过了

#include<bits/stdc++.h>
using namespace std;
int main(){
    int l,m;
    cin>>l>>m;
    int s[l+1]={0};
    int u[m],v[m];
    for(int i=0;i<m;i++){
        cin>>u[i]>>v[i];
    }
    for(int i=0;i<m;i++){
        for(int j=u[i];j<=v[i];j++){
            if(s[j]==0){
                l--;
                s[j]=1;
            }
        }
    }
    cout<<l+1;
    return 0;
}

by Clothax @ 2025-01-04 15:46:06

@linanchen 懂了,代码里画蛇添足了,谢谢大佬,好人一生平安


|