有没有可以做兼职的网站,友情链接权重高的网站,网站开发服务商,iis与wordpress区间合并算法#xff1a; 1.将所有区间按左端点从小到大排序 2.从左到右遍历每个区间 例题#xff1a; 某校大门外长度为L的马路上有一排树#xff0c;每两棵相邻的树之间的间隔都是1米。 我们可以把马路看成一个数轴#xff0c;马路的一端在数轴0的位置#xff0c;另一端…区间合并算法 1.将所有区间按左端点从小到大排序 2.从左到右遍历每个区间 例题 某校大门外长度为L的马路上有一排树每两棵相邻的树之间的间隔都是1米。 我们可以把马路看成一个数轴马路的一端在数轴0的位置另一端在L的位置数轴上的每个整数点即012……L都种有一棵树。 由于马路上有一些区域要用来建地铁。 这些区域用它们在数轴上的起始点和终止点表示。 已知任一区域的起始点和终止点的坐标都是整数区域之间可能有重合的部分。 现在要把这些区域中的树包括区域端点处的两棵树移走。 你的任务是计算将这些树都移走后马路上还有多少棵树。
输入格式 输入文件的第一行有两个整数L和ML代表马路的长度M代表区域的数目L和M之间用一个空格隔开。 接下来的M行每行包含两个不同的整数用一个空格隔开表示一个区域的起始点和终止点的坐标。
输出格式 输出文件包括一行这一行只包含一个整数表示马路上剩余的树的数目。
代码如下
#include iostream
#include algorithmusing namespace std;
const int N 510;
struct Segment
{int l,r;bool operator (const Segment t) const{return lt.l;}
}s[N];
int main()
{int sum,n;cinsumn;for (int i 0;in;i){cins[i].ls[i].r;}int cnt 0;sort(s,sn);int L s[0].l,R s[0].r;for (int i 1;in;i){if (s[i].l R){R max(R,s[i].r);}else{cntR-L1;L s[i].l,R s[i].r;}}cntR-L1;coutsum1-cntendl;return 0;
}