码迷,mamicode.com
首页 > 其他好文 > 详细

校门外的树

时间:2015-02-10 20:14:52      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

问题描述
某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们
可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L 的位置;数轴上的每
个整数点,即 0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。 这些区域用它们在数轴上的起始点和终止点表示。 已
知任一区域的起始点和终止点的坐标都是整数, 区域之间可能有重合的部分。 现在要把这些
区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上
还有多少棵树。
输入数据
输入的第一行有两个整数 L(1 <= L <= 10000)和 M(1 <= M <= 100),L 代表马路
的长度,M 代表区域的数目,L 和 M 之间用一个空格隔开。接下来的 M 行每行包含两个不
同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
输出要求
输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
输入样例
500 3
150 300
100 200
470 471
输出样例
输出样例
298

 1 #include<iostream>
 2 using namespace std;
 3 const int maxn = 10000 + 5;
 4 
 5 int main() {
 6     int L, n;
 7     bool trees[maxn];
 8     for(int i=0; i<maxn; i++)
 9         trees[i] = true;
10     cin >> L >> n;
11     for(int i=0; i<n; i++) {
12         int begin, end;
13         cin >> begin >> end;
14         for(int j=begin; j<=end; j++)
15             trees[j] = false;
16     }
17     int count = 0;
18     for(int i=0; i <= L; i++)
19         if(trees[i]) count++;
20     cout << count << "\n";
21     return 0;
22 }

这题只有一个思想,就是把所有的树做标记。

不过这个做法效率不高。

校门外的树

标签:

原文地址:http://www.cnblogs.com/liangyongrui/p/4284535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!