本文主要是介绍P1047 [NOIP2005 普及组] 校门外的树题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
某校大门外长度为 l 的马路上有一排树,每两棵相邻的树之间的间隔都是1 米。我们可以把马路看成一个数轴,马路的一端在数轴 00 的位置,另一端在l 的位置;数轴上的每个整数点,即0,1,2,…,l,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入输出格式
输入格式
第一行有两个整数,分别表示马路的长度l和区域的数目m。
接下来m 行,每行两个整数u,v,表示一个区域的起始点和终止点的坐标
输出格式
输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量
输入输出样例
输入
500 3
150 300
100 200
470 471
输出
298
代码
#include<iostream>
const int maxn=10005;//定义常量
int h[maxn];
using namespace std;
int main(){int l,m;int u,v;cin>>l>>m;int i;for(i=0;i<=l;i++){h[i]=1;}while(m--){cin>>u>>v;for(i=u;i<=v;i++){h[i]=0;}}int count=0;for(i=0;i<=l;i++){if(h[i]!=0){count++;}}cout<<count<<endl;return 0;
}
这篇关于P1047 [NOIP2005 普及组] 校门外的树题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!