题目描述
某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。
我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L 的位置;数轴上的每个整数点,即 0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。
这些区域用它们在数轴上的起始点和终止点表示。
已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。
现在要把这些区域中的树(包括区域端点处的两棵树)移走。
你的任务是计算将这些树都移走后,马路上还有多少棵树。
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
#include<iostream>
using namespace std;
int main()
{
int a[10010];
int l,m,sum;
cin>>l>>m;
for(int i = 0;i <= l;i++) //i从0开始 (包括区域端点处的两棵树)
{ //将数组全部初始化为1 记作全部有树
a[i]=1;
}
while(m--) //开始移树 将1变成0视为把树移掉
{
int x,n;
cin>>x>>n;
for(int i = x;i <= n;i++)
{
a[i]=0;
}
}
for(int i = 0;i <= l;i++) //统计最后剩余的树
sum+=a[i];
cout<<sum;
return 0;
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla