仍然是acm的基础题。。简单的数组运算,状态模拟
但是伟大往往不都是从菜鸟开始的么哈哈。。
本人菜鸟一枚,决心入了acm的坑,目前双非普一大一,给自己立个flag吧,2018年,蓝桥杯国赛,校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; }
文章来源: Poj百练(分类刷题) 2808 校门外的树