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

题目描述

某校大门外长度为 l 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 l 的位置;数轴上的每个整数点,即 0,1,2,…,l,都种有一棵树。

由于马路上有一些区域要用来建地铁。现在要把这些区域中的树(包括区域端点处的两棵树)移走。

代码

用字符数组来存储每棵树的位置能够大大减少空间的利用。

#include

using namespace std;

int main(){
     
	int l,m,i,j,u,v,cnt=0;
	char a[10010];
	memset(a,'1',sizeof(a));
	cin>>l>>m;
	for(i=0;i<m;i++){
     
		cin>>u>>v;
		for(j=u;j<=v;j++){
     
			if(a[j]=='1') a[j]='0';
		}
	}
	for(i=0;i<=l;i++){
     
		if(a[i]=='1') cnt++;
	}
	cout<<cnt;
	return 0;
}

你可能感兴趣的:(洛谷,c++)