求助大佬

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

Andyliu2023 @ 2024-02-23 21:47:55

代码为什么会出错?求助大佬

#include<bits/stdc++.h>
using namespace std;
int main(){
    int l,m,u,v,i,minu=10001,maxv=-1;
    cin>>l>>m;
    for(i=1;1<=m;i++){
        cin>>u>>v;
        minu=min(u,minu);
        maxv=max(v,maxv);
    }
    cout<<l-maxv+minu;
    return 0;
}

by Terrible @ 2024-02-23 21:54:24

@Andyliu2023

for 第二个参数 改成 i<=m

另外你这个思路根本就不对,样例都过不去就是了。


by Into_the_Abyss @ 2024-02-23 22:16:57

@Andyliu2023 可以看下我的思路

#include <bits/stdc++.h>
using namespace std;
int main(){
    int m,l;
    cin>>l>>m;
    int a[l+100]={};//用数组记录是否移走的状态1为移走0为未移走
    for(int i=1;i<=m;i++){
        int v,u;
        cin>>v>>u;
        for(int j=v;j<=u;j++){
            a[j]=1;//移走后记录状态变为1
        }
    }
    int s=0;
    for(int i=0;i<=l;i++){
        if(a[i]==0){
            s++;//如果为0则为未移走就讲计数器++
        }
    }
    cout<<s;
}

by Into_the_Abyss @ 2024-02-23 22:19:55

@Andyliu2023

你的思路错在把移走的区间定为输入的u的最小值和输入的v的最大值

实则不是如此,可以再审审题哈


by Andyliu2023 @ 2024-02-28 21:24:28

@YJHtbyz 谢谢大佬!!!


by Andyliu2023 @ 2024-08-24 20:39:28

@Terrible 谢谢大佬


by Andyliu2023 @ 2024-08-24 20:40:14

@Into_the_Abyss 谢谢大佬


|