问题 2244 --线段重叠(程序填空)

2244: 线段重叠(程序填空)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 323  解决: 205
[提交][状态][命题人:]

题目描述

数轴上有 nnn 条线段,选取其中 kkk 条线段使得这 kkk 条线段两两没有重合部分,问 kkk 最大为多少。

#include<bits/stdc++.h>
using namespace std;
int n,ans,i,ed;
struct node
{
    int l,r;//分别表示线段的起点和终点 
}XD[1000010];
bool cmp(node a,node b)
{
    //根据线段终点从小到大排序 
    ______(1)__________
}
int main()
{
    scanf("%d",&n);
    //读入每个线段的起点和终点 
    for(i=1;i<=n;i++)
        scanf("%d%d",_____(2)_____);
    //自定义排序 
    sort(XD+1,XD+n+1,cmp); 
    //统计不重叠的线段 
    ed=XD[1].r;
    ans=1;
    for(i=2;i<=n;i++)
    {
         //当前线段的起点大于前一个线段的终点 
        if(____(3)_____)
        {
            ed=XD[i].r;
            ans++;
        }
    }
    //输出答案 
    printf("%d\n",____(4)_____);
    return 0;
}

输入

输出

输出一个整数,为 kkk 的最大值。
样例输入
Copy
3
0 2
2 4 
1 3
样例输出
Copy
2

提示

注:端点可以重合。

来源

 

[提交][状态]