Poj百练(分类刷题) 2808 校门外的树

仍然是acm的基础题。。简单的数组运算,状态模拟

但是伟大往往不都是从菜鸟开始的么哈哈。。

本人菜鸟一枚,决心入了acm的坑

每周更新poj5-8题,欢迎监督,题是我分好类来刷的,有兴趣的同学可以和我一起。欢迎交流~


这道题的注意都写在注释里了咯

#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;

int L, M;
int main(){
	scanf("%d%d", &L, &M);
	//用一个Bit来表示一个区域节省空间,1表示有树,同时记得略微扩大数组以防止越界 
	char pos[L+10];
	memset(pos, 1, sizeof(pos));
	int a, b; 
	for(int i = 0; i < M; i++){
		scanf("%d%d",&a,&b);
		//这里采用位运算增强计算效率 
		for(int i = a; i <= b; i++){
			//printf("%c",pos[i]);
			pos[i] &= 0;
		}			
			
	}
	
	int count = 0;
	//尤其要注意这个地方,注意考虑从0开始到L的两端点情况 
	for(int i = 0; i <= L; i++){
		if(pos[i])
			++count;
	}
	printf("%d",count);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/a1097304791/article/details/80808048