[NOIP2005]普及组 校门外的树 #题例子运行是对的,但是提交后不对
int l,n,i,j,s;
scanf("%d %d",&l,&n);
int *lp = (int*)malloc(l*sizeof(int));
int (*scale)[2] = (int (*)[2])malloc(n*sizeof(int) );
for (i = 0; i < n; i++)
{
for (j = 0; j < 2; j++)
{
scanf("%d",&scale[i][j]);
}
}
for ( s = 0; s < l; s++)
{
lp[s] = 1;
}
for(i = 0; i < n; i++)
{
for(s = scale[i][0]; s < scale[i][1]; s++)
lp[s] = 0;
}
int last_l = 0;
for (s = 0; s < l; s++)
{
last_l+=lp[s];
}
printf("%d",last_l - 1);
你具体题目是什么啊
#include<iostream>
#include<cstdio>
using namespace std;
int len,n,a[40100];
void insert(int x,int l,int r,int left,int right)
{
if(a[x]==r-l+1)
return;
if(l==left&&r==right){
a[x]=r-l+1;
return;
}
int m=(l+r)/2;
if(right<=m)
insert(x+x,l,m,left,right);
else if(left>m)
insert(x+x+1,m+1,r,left,right);
else{
insert(x+x,l,m,left,m);
insert(x+x+1,m+1,r,m+1,right);
}
a[x]=a[x+x]+a[x+x+1];//把两边的值加起来就好了~~~
}
int main()
{
freopen("tree.in","r",stdin);
freopen("tree.out","w",stdout);
cin>>len>>n;
for(int i=1;i<=n;++i){
int x,y;
cin>>x>>y;
insert(1,0,len,x,y);
}
cout<<len+1-a[1]<<endl;
return 0;
}
《NOIP2005年普及组题解https://blog.csdn.net/ljp946/article/details/82740838
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
int n,m,b,c,ans=0;
bool a[10005];
scanf("%d%d",&n,&m);
memset(a,1,sizeof(a));
for(int i=1;i<=m;i++)
{
scanf("%d%d",&b,&c);
for(int i=b;i<=c;i++)
a[i]=0;
}
for(int i=1;i<=n+1;i++)
if(a[i])
ans=ans+1;
printf("%d",ans);
return 0;
}