题目描述

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

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

输入格式

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

输出格式

1个整数,表示马路上剩余的树的数目。

输入输出样例

输入 #1


输出 #1


说明/提示

NOIP2005普及组第二题

对于20\%20%的数据,区域之间没有重合的部分;

对于其它的数据,区域之间有重合的情况。

思考:

这其实是一道入门级别的题,可是在提交的时候总是有一些测试点过不去,原因就在于不够仔细,数组开得不够大。我是用define来给数组大小,一开始考虑到有M组数据,而且题目给出范围1≤M≤100,所以就将数组开到100。可是在第一次测试运行时,发现无法输出。后来发现,原来是我用来代表树木的数组太小了。因为题目给出1≤L≤10000,所以我就把数组大小改了,开到10000。本来以为可以了,结果测试运行时,虽然可以给出答案,测试数据也可以通过,但是提交的时候依然无法AC。仔仔细细再看一遍题目,发现题目虽然给的L范围是1≤L≤10000,但是,马路的端点都有种树,这就意味着实际上如果要用L代表树木的数量,那么L的范围应该是1≤L≤10001才对。修改过后,得到的最后结果就可以AC了。

完整代码:

#include<stdio.h>
#define N 10001
int main()
{
int l,m,i,j,sum=,a[N],b[N],c[N]={};
//c[N]数组用来表示树木,初始值均为零,表示还没有被移走
scanf("%d%d",&l,&m);//输入马路长度和区域数
for(i=;i<m;i++)
scanf("%d%d",&a[i],&b[i]);//输入每组数据的起始点
for(i=;i<m;i++)
{
if(a[i]>b[i])
{
for(j=b[i];j<=a[i];j++)
c[j]=;
}
if(a[i]<=b[i])
{
for(j=a[i];j<=b[i];j++)
c[j]=;
}
} //由于不确定是否严格按照起点和终点的格式输入,所以要先判断大小。
//在区域范围内的树木标记为1
for(i=;i<=l;i++)
if(c[i]==)
sum=sum+;
//判断,没有被标记的树木c[i]=0,总数+1
printf("%d",sum);
return ;
}

题目链接:https://www.luogu.com.cn/problem/P1047

洛谷题解P1047 校门外的树的更多相关文章

  1. 洛谷P1047 校门外的树

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

  2. 洛谷——P1047 校门外的树

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

  3. P1047 校门外的树

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

  4. luogu P1047 校门外的树 x

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

  5. 【洛谷】【线段树】P1047 校门外的树

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

  6. [模拟]P1047 校门外的树

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

  7. 题解 P1276 校门外的树(增强版)

    前言 本蒟蒻重学线段树,发现了这道题可以用线段树做. 虽然数据范围很小可以直接暴力,但由于在练习线段树所以打算用线段树写这道题. 本题解针对已经有线段树基础的巨佬,不懂线段树原理的话可以学习线段树后再 ...

  8. 洛谷P1047校门外的树题解

    题目 此题是一个模拟题,但需要注意的一点就是它的树是从数轴的0开始,所以我们也要从0开始,这样才能实现代码. 代码: #include<iostream> using namespace ...

  9. 洛谷 P1047 校门外的树 题解

    Case 1. 本题其实不难,直接模拟就可以了.时间复杂度: \(O(L \times M)\) Case 2. 考虑一个简单的增强:把原来的: \[L \leq 10^4,M \leq 10^2 \ ...

随机推荐

  1. 读取npz,并显示图像

    import numpy as npimport osimport matplotlib.pyplot as pltimport sysimport cv2 a = np.load('/home/wg ...

  2. Linux (Ubuntu) 服务器安装MySQL,设置不限ip,root远程密码访问

    1.注释bind-address = 127.0.0.1 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf   将bind-address = 127.0.0.1 ...

  3. 112、Java中String类之字符串文本拆分为指定的个数

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  4. mysql5.7 忘记root密码修改方式

    参考文档: http://www.jb51.net/article/77858.htm # /etc/init.d/mysql stop --停止mysql服务 # /work/program/mys ...

  5. 查漏补缺之slice

    interviewer:说一说slice interviewee: 主要包括以下几点 slice and array slice的底层数据结构 length和capacity 切片的capacity的 ...

  6. python3的urllib以及urllib2的报错问题

    1. urllib.urlencode(params) 换成 urllib.parse.urlencode(params) 2. 在python3.3后urllib2已经不能再用,只能用urllib. ...

  7. c-指针的理解

    c-指针的理解 最近在学习MFC,其中的代码有点看的不是很深刻,究其原因还是对c语言中的指针理解的不是很好,下面详细的给大家介绍一下指针,如有不当之处,欢迎各位读者指正. 一.指针的概念 C语言里,变 ...

  8. 【剑指Offer面试编程题】题目1512:用两个栈实现队列--九度OJ

    题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例. 对于每个测试样例,第一行输入一个n(1<=n<=1 ...

  9. JS链接转换为二维码

    这里用到一个JQ插件 qrcode.js   下载地址https://github.com/jeromeetienne/jquery-qrcode 先引入 <script src="j ...

  10. Kubernetes 二进制部署(二)集群部署(多 Master 节点通过 Nginx 负载均衡)

    0. 前言 紧接上一篇,本篇文章我们尝试学习多节点部署 kubernetes 集群 并通过 haproxy+keepalived 实现 Master 节点的负载均衡 1. 实验环境 实验环境主要为 5 ...