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

using namespace std;

int main()
{
     int L, M, i, j, sum = 0;
     int tree[10010];
     int begin[101], end[101];
     cin >> L >> M;
     for(i = 0; i <= L; i++)
          tree[i] = 1;
     for(i = 0; i < M; i++)
     {
          cin >> begin[i] >> end[i];
     }
     for(i = 0; i < M; i++)
     {
          for(j = begin[i]; j <= end[i]; j++)
               tree[j] = 0;
     }
     for(i = 0; i <= L; i++)
     {
          if(tree[i] == 1)
               sum++;
     }
     cout << sum << endl;
     return 0;
}

(2)、解题思路:
这个问题可以概括为输入一个大的整数闭区间,及一些可能相互重叠的在该大区间内的小的整数闭区间。在大的整数闭区间内去除这些小的整数闭区间,问之后剩下的可能不连续的整数区间内有多少个整数。
可以采用用空间换时间的方法,用一个数组来模拟这些区间,类似于位向量的办法。在数组中一个数代表一棵树,若没移走,为1,移走为0。每输入一个区间,就将区间内的数置为0,最后统计1的个数即为剩余的树的棵树。
这类似于《编程珠玑》第一章中所讲述的位图或者位向量的方法。

转载于:https://www.cnblogs.com/lydf-2012/archive/2012/05/11/2496640.html

POJ 2808 校门外的树相关推荐

  1. 北大OJ(POJ 2808)校门外的树

    描述 在[0,L]的区间内,每个整数都有一棵树,现因某些原因移走一些数 求移走这些树后还剩多少棵树 输入 输入的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= ...

  2. Bailian2808 校门外的树【基础】

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

  3. 基本思想(模拟)——鸡兔同笼+校门外的树+约瑟夫问题+装箱子问题+排列【POJ 1833】

    用模拟法解决问题的基本思想是对事物进行抽象,将现实世界的事物映射成计算机所能识别的代码符号,将现实事物之间的关系映射成运算或逻辑控制流. 目录 鸡兔同笼 校门外的树 约瑟夫问题 装箱子问题 排列问题 ...

  4. P1276 校门外的树(增强版)(线段树)(校门三部曲)难度⭐⭐⭐

    校门三部曲,总算完结了!完结散花! 难度呈阶梯状,都可以用线段树解决. 第一部 P1047 校门外的树(线段树优化)难度⭐⭐ 第二部 P1276 校门外的树(增强版)(线段树)校门三部曲难度⭐⭐⭐ 第 ...

  5. P1047 校门外的树(线段树优化)(校门三部曲)难度⭐⭐

    校门三部曲,总算完结了!完结散花! 难度呈阶梯状,都可以用线段树解决. 第一部 P1047 校门外的树(线段树优化)难度⭐⭐ 第二部 P1276 校门外的树(增强版)(线段树)校门三部曲难度⭐⭐⭐ 第 ...

  6. Vijos P1103 校门外的树【线段树,模拟】

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

  7. CCF 202104-4 校门外的树 Python

    202104-4 校门外的树 题目链接 题型分析 代码 但运行超时,只能拿到60分,欢迎各位提问和改进! 题目链接 http://118.190.20.162/view.page?gpid=T125 ...

  8. 校门外的树——树状数组+区间修改

    校门外的树 [题目分析]题目描述的是一种区间修改,看起来好像要用线段树.但是对于这种区间内部没有差别并且查询的是区间内的类别的问题,是可以转化为树状数组进行的.毕竟树状数组更加简单. 我们的关注点应该 ...

  9. P1047 [NOIP2005 普及组] 校门外的树(python3实现)

    [NOIP2005 普及组] 校门外的树 - 洛谷 """P1047 [NOIP2005 普及组] 校门外的树(python3实现) https://www.luogu. ...

最新文章

  1. 情人节学写html5微信游戏
  2. TensorFlow Lite:TensorFlow在移动设备与嵌入式设备上的轻量级跨平台解决方案 | Google 开发者大会 2018...
  3. Linux内核移植之三:内核配置选项
  4. C#路径/文件/目录/I/O常见操作汇总(一)
  5. 【学习笔记】Javascript函数调用
  6. SQL2012数据库加密方法
  7. 局域网限速软件_2号破解app重器推荐一款强大的快捷软件
  8. JS展示预览PDF。
  9. 1小时教你学会正则表达式
  10. python入门指南_Python中的逻辑门–入门指南
  11. 昂达v891w可以用u盘linux,昂达V891W CH Windows10(TH2)系统镜像(适用于V1版本)下载...
  12. s3c2416 AT070TN83的LCD wince6.0驱动移植
  13. directshow虚拟摄像头
  14. Day4----类训练(搬家具、烤地瓜)
  15. 电子邮件格式是什么,你知道电子邮件在哪里找吗
  16. 矩阵计算:乘法,哈达玛积,克罗内克积 ,方阵的部分性质
  17. 赢得值系列2:赢得值理论的关键参数
  18. 如何在JavaScript中直观地设计状态
  19. 爬虫实战 | 采集可视化知乎问题的回答
  20. 网络基础之网络布线、数制转换和子网划分

热门文章

  1. visio保存后公式变形_涨姿势了!仿真变形后的模型还能保存下来
  2. 一个“登录框“引发的安全问题
  3. linux安装xgboost快速高效方法
  4. eclipse上安装hadoop后报错 Error:org.hadoop.security.AccessControlException:Permission
  5. 剑指offer 重建二叉树
  6. Redis cluster集群扩容缩容原理
  7. spark.mllib:Optimizer
  8. Java并发编程笔记之LinkedBlockingQueue源码探究
  9. Django笔记---数据库设计
  10. eclipse下web开发中缓存问题