百炼POJ 2808 校门外的树

来源:互联网 发布:mac网页怎么添加收藏 编辑:程序博客网 时间:2024/05/16 11:24
分析
这个问题可以概括为输入一个大的整数闭区间,及一些可能相互重叠的在该大区间内的小的整数闭区间。在大的整数闭区间内去除这些小的整数闭区间,问之后剩下的可能不连续的整数区间内有多少个整数。
可以采用用空间换时间的方法,用一个数组来模拟这些区间,类似于位向量的办法。在数组中一个数代表一棵树,若没移走,为1,移走为0。每输入一个区间,就将区间内的数置为0,最后统计1的个数即为剩余的树的棵树。
代码
#include<iostream>
using namespace std;
int main()
{
int l,m,i,j;
int a[10001];
for(i=0;i<10001;i++)
a[i]=1;
cin>>l>>m;
int begin,end;
while(m--)
{
cin>>begin>>end;
for(j=begin;j<=end;j++)
a[j]=0;
}
int count=0;
for(i=0;i<=l;i++)
{
if(a[i]==1)
count++;
}
cout<<count<<endl;
}
经验:
学会使用一些数据结构简化编程过程。