0
点赞
收藏
分享

微信扫一扫

洛谷P1047 校门外的树

码农K 2022-03-13 阅读 33
#include<stdio.h>
#include<stdlib.h>//malloc

int main(){

	int L,M,init,end,num=0;
	scanf("%d%d",&L,&M);
	//int road[L+1];错误
	int *road = (int*)malloc(L * sizeof(int));
	//初始化数组
	for(int i=0;i<=L;i++){
		road[i]=0;
	}
	//把移走的树标记成1
	for(int i=0;i<M;i++){
		scanf("%d%d",&init,&end);
		for(int j=init;j<=end;j++){
			road[j]=1;
		}
	}
	//计算数组中为0的数,即为剩下的树
	for(int i=0;i<=L;i++){
		if(road[i]==0)num++;
	}
	//输出
	printf("%d",num);

	return 0;
}

范围有重叠部分的情况:

用数组把范围内的数都定义为1,其他数都为0,这样就可以解决重叠问题。最后输出数组中0的个数就是树的数量。

举报

相关推荐

0 条评论