luogu3213 @ 2023-06-05 12:18:57
#include <stdio.h>
long l[10000],m,L;
long cnt=0;
int main() {
for(long i=0;i<10000;i++)
l[i]=1;
scanf("%ld%ld\n",&m,&L);
for(int i=1;i<=m;i++)
{
long head,tail;
scanf("%ld%ld\n",&head,&tail);
for(int j=head;j<=tail;j++)
if(l[j]==1)
l[j]=0;
}
for(int i=0;i<L;i++)
if(l[i]==1)
cnt++;
printf("%ld",cnt);
return 0;
}
by Steve_xh @ 2023-06-05 12:40:11
最后一个 for
为啥直到 L
啊?应该改成 for(int i=0;i<10000;i++)
by Steve_xh @ 2023-06-05 12:42:15
@luogu3213 你的 L
存的是有多少段,但是你的 l[]
数组是按下标来存的
by luogu3213 @ 2023-06-05 12:45:34
@Steve_xh 因为不一定有10000棵树啊!如果我输入L棵树 那就只有for(int i=0;i<L;i++)了啊
by OURUO @ 2023-06-05 12:47:13
我这样写绿3个
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[100001];
int l,m;
cin>>l>>m;
int u,v;
int sum;
for(int i=0;i<l;i++){
a[i]=1;
}
while(m!=0){
cin>>u>>v;
for(int i=u;i<=v;i++){
a[i]=0;
}
m--;
}
for(int i=0;i<l;i++){
if(a[i]!=0){
sum++;
}
}
cout<<sum<<endl;
return 0;
}
by luogu3213 @ 2023-06-05 12:49:56
@OURUO for(int i=0;i<l;i++)改成 for(int i=0;i<=l;i++)
by OURUO @ 2023-06-05 12:53:35
@luogu3213 绿绿的一片……
by Steve_xh @ 2023-06-05 13:23:58
@luogu3213 你还没懂?你的数组存的是每一米有没有树,怎么可能最多才L米呢?要把整一段都遍历呀
by Steve_xh @ 2023-06-05 13:24:53
@luogu3213 你改了之后看看有没有对先吧!