首页 > 其他 > 详细

F:校门外的树

时间:2020-12-04 09:21:22      阅读:20      评论:0      收藏:0      [点我收藏+]
总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入
第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

对于20%的数据,区域之间没有重合的部分;
对于其它的数据,区域之间有重合的情况。
输出
包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
样例输入
500 3
150 300
100 200
470 471
样例输出
298
 1 #include <iostream>
 2 using namespace std;
 3 struct Tree
 4 {
 5     int x;//标记树的位置
 6     int tree;//用来标记树的情况,是否被访问过
 7 
 8 }a[10001];
 9 int i = 0;
10 int main()
11 {
12     int l, m;
13     cin >> l >> m;
14     for (i=0;i<l+1;++i)//初始化
15     {
16         a[i].tree = 0;
17         a[i].x = i;
18     }
19     int c, b;
20     for (i=0;i<m;++i)
21     {
22         cin >>c >>b;
23         for (int k=c;k<b+1;++k)
24         {
25             a[k].tree = 1;
26         }
27 
28     }
29     int sum = 0;
30     for ( i = 0; i < l+1; i++)
31     {
32         if (a[i].tree == 0)
33         {
34             sum++;
35         }
36     }
37     cout << sum;
38     return 0;
39 }

技术分享图片

如果出现上述报错,是因为定义的变量重名了

F:校门外的树

原文:https://www.cnblogs.com/dss-99/p/14083723.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!