d13599385212 @ 2023-07-15 16:02:21
#include<iostream>
#include <cstdio>
using namespace std;
int main(){
int a,b,c=0,y;
int a2[20000]={0};
int a3[2][1000];
scanf("%d%d",&a,&b);
for(int i=0;i<b;i++)
{
scanf("%d%d",&a3[0][i],&a3[1][i]);
}
for(int i=1;i<=b;i++)
{
for(int k=0;k<b;k++)
{
for(int j=a3[0][k];j<=a3[1][k];j++)
{
a2[j]=1;
}
}
}
for(int i=0;i<a;i++)
{
if(a2[i]==1)c++;
}
y=a+1-c;
printf("%d",y);
return 0;
}
by xixisuper @ 2023-07-15 16:22:08
@d13599385212 有几个问题
其一,中间的三层循环最外面一层完全不需要,直接去掉即可
其二,可能种树的范围的下标是
for(int i=0;i<a;i++)
改为
for(int i=0;i<=a;i++)
by xixisuper @ 2023-07-15 16:22:46
@d13599385212 AC 代码:
#include<iostream>
#include <cstdio>
using namespace std;
int main(){
int a,b,c=0,y;
int a2[20000]={0};
int a3[2][1000];
scanf("%d%d",&a,&b);
for(int i=0;i<b;i++)
{
scanf("%d%d",&a3[0][i],&a3[1][i]);
}
for(int k=0;k<b;k++)
{
for(int j=a3[0][k];j<=a3[1][k];j++)
{
a2[j]=1;
}
}
for(int i=0;i<=a;i++)
{
if(a2[i]==1)c++;
}
y=a+1-c;
printf("%d",y);
return 0;
}
by O_0node @ 2023-07-17 10:11:34
#include<bits/stdc++.h>
using namespace std;
long long b[10005];
int main(){
long long a,c,d,s,n=0;
cin>>a>>c;
for(int i=1;i<=c;i++){
cin>>d>>s;
for(int j=d;j<=s;j++)
b[j]=1;
}
for(int i=0;i<=a;i++){
if(b[i]==0){
n++;
}
}
cout<<n;
return 0;
}
这样也行