2808:校门外的树
描述
某校大门外长度为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
来源
noip2005普及组

问题链接:Bailian2808 校门外的树
问题描述:(略)
问题分析
  这是一个简单的问题,用一个数组标记一下树就可以了。需要移走的树也做过标记,然后再统计一下就得到结果了。关键是能否想到使用标记数组。
程序说明
  C语言程序中,标记数组tree[]使用char类型最为节省存储。如果使用C++语言编程则可以使用bool类型的数组。
  为了在初始化数组tree[]时避免对整个数组进行初始化,使得初始化单元的数量更少,在读入l值后再进行初始化。通常的写法是"memset(tree, TRUE, sizeof(tree));"。
另外一种解法是差分法,整个数轴需要向右移动一个位置,因为需要处理0-L之间的数。
参考链接:(略)
题记:使用宏定义可以使得程序更加易于阅读。

AC的C语言程序(差分)如下:

/* Bailian2808 校门外的树 */#include <stdio.h>
#include <string.h>#define L 10000 + 3
int d[L], cnt[L];int main(void)
{int l, m, i;scanf("%d%d", &l, &m);memset(d, 0, l + 3);for(i = 1; i <= m; i++) {int start, end;scanf("%d%d", &start, &end);d[start + 1]++, d[end + 2]--;}int cnt2 = 0;cnt[0] = 0;for(i = 1; i <= l + 1; i++)if ((cnt[i] = cnt[i - 1] + d[i]) > 0)cnt2++;printf("%d\n", l + 1 - cnt2);return 0;
}

AC的C语言程序如下:

/* Bailian2808 校门外的树 */#include <stdio.h>
#include <string.h>#define TRUE 1
#define FALSE 0
#define L 10000char tree[L + 1];int main(void)
{int l, m, i, j;scanf("%d%d", &l, &m);memset(tree, TRUE, l + 1);for(i = 1; i <= m; i++) {int start, end;scanf("%d%d", &start, &end);for(j = start; j <= end; j++)tree[j] = FALSE;}int cnt = 0;for(i = 0; i <= l; i++)if(tree[i]) cnt++;printf("%d\n", cnt);return 0;
}

Bailian2808 校门外的树【基础】相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树

    [题目链接] ybt 1107:校门外的树 ybt 1931:[05NOIP普及组]校门外的树 OpenJudge NOI 1.6 06:校门外的树 洛谷 P1047 [NOIP2005 普及组] 校 ...

  9. 信息学奥赛一本通(1107:校门外的树)

    1107:校门外的树 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 44359     通过数: 23491 [题目描述] 某校大门外长度为L的马路上有一排树,每 ...

最新文章

  1. UVA 10306 e-Coins(全然背包: 二维限制条件)
  2. Python的sorted函数应用
  3. 与c交互_SV DPI-C接口学习心得
  4. 在win8上安装mysql_如何在Win8系统上安装MySQL 5.6
  5. 去除div最后一个逗号_去除重复值、统计数量,这个公式可以直接套用!
  6. Ajax应用查询员工信息
  7. 炉石整活拔线方法_酒馆战棋:整活如何简单“拔线”?瓦娘在线教学,却3本得死神?...
  8. python raise用处_python基础教程python raise的基本使用
  9. 深入浅出Java反射机制
  10. python 超像素分割
  11. 盘点五款值得收藏的 Linux 开发板
  12. CodeSmith(1):使用和语法简介
  13. 2022年计算机保研记录(计算所、浙大、华科、东南、北航)
  14. 阿里巴巴直推关键技术手册收藏
  15. 武大女硕士面试被拒,改简历冒充本科生找工作的感想(原创)
  16. 微信开放平台开发(一)
  17. 深开鸿携手深业健康、家具协会打造智慧康养新模式,推动行业新标建设
  18. 关于条形码的属性与一些自定义操作
  19. 最大子序列和问题c语言力扣,力扣
  20. python坐标转化极坐标方程公式_数学 球坐标(Spherical) - 闪电教程JSRUN

热门文章

  1. [摘抄] 匈牙利命名法
  2. GDAL读取S-57海图数据中文属性值乱码问题解决(续)
  3. 贪吃的大嘴用java_算法提高 贪吃的大嘴
  4. mysql union 别名报错_MySQL中UNION和UNION ALL的使用
  5. js请求后台接口返回的图片并转为base64
  6. mangos架设魔兽世界私服
  7. [SheRO]用D3D绘制2D图像
  8. 网游Server端开发基础
  9. druid mysql 配置优化_数据库连接池优化配置(druid,dbcp,c3p0)
  10. 计算机管理主要是作业管理和什么管理,计算机四级之作业管理试题