洛谷题解P1047 校门外的树
题目描述
某校大门外长度为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 ;
}
洛谷题解P1047 校门外的树的更多相关文章
- 洛谷P1047 校门外的树
P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
- 洛谷——P1047 校门外的树
P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
- P1047 校门外的树
P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
- luogu P1047 校门外的树 x
P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
- 【洛谷】【线段树】P1047 校门外的树
[题目描述:] 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L ...
- [模拟]P1047 校门外的树
校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,- ...
- 题解 P1276 校门外的树(增强版)
前言 本蒟蒻重学线段树,发现了这道题可以用线段树做. 虽然数据范围很小可以直接暴力,但由于在练习线段树所以打算用线段树写这道题. 本题解针对已经有线段树基础的巨佬,不懂线段树原理的话可以学习线段树后再 ...
- 洛谷P1047校门外的树题解
题目 此题是一个模拟题,但需要注意的一点就是它的树是从数轴的0开始,所以我们也要从0开始,这样才能实现代码. 代码: #include<iostream> using namespace ...
- 洛谷 P1047 校门外的树 题解
Case 1. 本题其实不难,直接模拟就可以了.时间复杂度: \(O(L \times M)\) Case 2. 考虑一个简单的增强:把原来的: \[L \leq 10^4,M \leq 10^2 \ ...
随机推荐
- vs2010 c++中内嵌汇编代码
在研究汇编时,需要自己写点汇编代码测试,用Ollydbg写每次加载程序就没了,不是很方便. 可以考虑直接在程序中写入汇编代码,只需要加上关键字“_asm”宏(C++代码中). 如下示例 编写环境 :v ...
- Shell Sort(希尔排序)
这个排序算法很厉害,我个人很喜欢这个算法,但算法的时间复杂度难计.算法对增量(这里也称作step(步长))的选择也需要注意,只记得个希尔增量的最坏情况为O(n^2).Hibbard增量的最坏情况为O( ...
- Django 学习之From组件
一.Form组件介绍 Form组件可以做的几件事情: 1.用户请求数据验证 2.自动生成错误信息 3.打包用户提交的正确信息 4.如果其中有一个错误了,其他的正确这,保留上次输入的内容 4.自动创建i ...
- titleView发生偏移、titleView与masonry、titleView的设置、titleView的使用
navigationItem的titleView属性的设置本身是很简单的,容易出问题的原因是自动化布局与frame混用造成的. 本文一步一步的讲解,力求找到问题的起源.如果你也在这块同样遇到问题,不妨 ...
- JS实现深拷贝,浅拷贝的方法
在 JS 中,函数和对象都是浅拷贝(地址引用):其他的,例如布尔值.数字等基础数据类型都是深拷贝(值引用). 深拷贝 JSON.parse(JSON.stringify(src)):这种方法有局限性, ...
- 一个Win32程序的进化------转载
一个Win32程序的进化 转载 weixin_34273046 发布于2017-11-15 10:53:00 阅读数 10 收藏 展开 一.为什么要学Win32 要回答这个问题,我们就要先搞清 ...
- SSH、SSL与HTTPS的联系
SSH 维基百科中对SSH协议的定义如下 Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定:SSH为一项创建在应用层和传输层基础上 ...
- windows远程桌面不显示本地磁盘
\\tsclient\D 在资源管理器输入上面的内容就可以访问本地的D盘,但是前提是连接远程桌面的时候设置了可以访问本地D盘.
- Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)
0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理 ...
- Python【day 19】反射
'''''' ''' 一.昨日内容回顾 1.依赖关系 1.弱关系.多态 1.松耦合 2.大象可以装冰箱,也可以装高压锅,就是多态 2.例子: 1.大象装冰箱 2.大象装高压锅 3.你打车 3.写法 大 ...