#includeusing namespace std; int main() { int m,l; int tree[100001] = {0}; cin>>l>>m; int u,v; //循环有多少个区域 for(int i = 0; i < m; i++) { cin>>u>>v;//输入区域起点、终点坐标 for(int j = u; j <= v; j++) { tree[j] = 1;// 将区域内树木全部移除 设置为1 } } int count = 0; for(int i = 0; i <= l; i++) { if(tree[i] == 0) { count++; } } cout< 解析:建立一个数组,首先假设所有的树木全部都在,然后输入一个个区域,遍历这个区域,将区域内的所有树木全部砍掉,也就是将数组元素设置为1即可,最后枚举数组元素,看看有多少个0。


![P1047 [NOIP2005 普及组] 校门外的树 P1047 [NOIP2005 普及组] 校门外的树](http://www.mshxw.com/aiimages/31/718021.png)
