LLX7 @ 2024-01-22 20:28:42
#include<bits/stdc++.h>
using namespace std;
int main(){
int l,m;
scanf("%d %d",&l,&m);
int a[10000000],u[10000000],v[10000000];
for(int i=0;i<l;i++){
a[i]=0;
}
for(int i=0;i<m;i++){
scanf("%d %d",&u[i],&v[i]);
}
for(int i=0;i<m;i++){
for(int j=u[i];j<=v[i];j++){
if(a[j]==0) a[j]=1;
}
}
int sum=0;
for(int i=0;i<l;i++){
if(a[i]==0) sum++;
}
printf("%d",sum+1);
return 0;
}
@liuyize549330 @huolechegan
by hjw100516 @ 2024-01-22 20:41:59
@LLX7
题目交代了,从0到l都有树,所以在初始化时应该初始到a[l]而不是a[l-1],所以在后面判断还剩几棵树时,是从0枚举到l,输出也不需要加1
using namespace std; int main(){ int l,m; scanf("%d %d",&l,&m); int a[10000000],u[10000000],v[10000000]; for(int i=0;i<=l;i++){ a[i]=0; } for(int i=0;i<m;i++){ scanf("%d %d",&u[i],&v[i]); } for(int i=0;i<m;i++){ for(int j=u[i];j<=v[i];j++){ if(a[j]==0) a[j]=1; } } int sum=0; for(int i=0;i<=l;i++){ if(a[i]==0) sum++; } printf("%d",sum); return 0; }
最终代码如下
by FarmerDrone @ 2024-01-22 20:42:30
sum+1肯定有问题 你这样就算把所有树都移了还会输出1
by Dream_Creator @ 2024-01-22 20:42:33
@LLX7
#include<bits/stdc++.h>
using namespace std;
int main(){
int l,m;
scanf("%d %d",&l,&m);
int a[10000000],u[10000000],v[10000000];
for(int i=0;i<=l;i++){
a[i]=0;
}
for(int i=0;i<m;i++){
scanf("%d %d",&u[i],&v[i]);
}
for(int i=0;i<m;i++){
for(int j=u[i];j<=v[i];j++){
if(a[j]==0) a[j]=1;
}
}
int sum=0;
for(int i=0;i<=l;i++){
if(a[i]==0) sum++;
}
printf("%d",sum);
return 0;
}
注意是区间
by hjw100516 @ 2024-01-22 20:43:01
@LLX7
刚刚发错了,再发一遍
#include<bits/stdc++.h>
using namespace std;
int main(){
int l,m;
scanf("%d %d",&l,&m);
int a[10000000],u[10000000],v[10000000];
for(int i=0;i<=l;i++){
a[i]=0;
}
for(int i=0;i<m;i++){
scanf("%d %d",&u[i],&v[i]);
}
for(int i=0;i<m;i++){
for(int j=u[i];j<=v[i];j++){
if(a[j]==0) a[j]=1;
}
}
int sum=0;
for(int i=0;i<=l;i++){
if(a[i]==0) sum++;
}
printf("%d",sum);
return 0;
}
by luoguxiaobai @ 2024-01-23 09:07:26
@LLX7 ```c
int main() { int m, n; scanf("%d%d", &m, &n); int sc[1001] = { 0 }; int a, b; for (int i = 1; i <= n; ++i) { scanf("%d%d", &a, &b); for (int j = a; j <= b; ++j) { sc[j] = 1; } } int cnt = 0; for (int i = 1; i <= m+1; ++i) { if(sc[i]==0)cnt++; } printf("%d", cnt); return 0; }