题目描述
数轴上有 n 条线段,选取其中 k 条线段使得这 k 条线段两两没有重合部分,问 k 最大为多少。
输入格式
第一行为一个正整数 n;
在接下来的 n 行中,每行有 2 个数 ai,bi,描述每条线段。
输出格式
输出一个整数,为 k 的最大值。
样例输入
3
0 2
2 4
1 3
样例输出
2
题解
就是一个活动安排问题,但要注意时间问题,用冒泡排序的话很容易超时,以后就用c++的快排吧。
#include<stdio.h>
#include<algorithm>
using namespace std;
struct xd{
int b;
int c;
}a[1000000];
bool cmp(xd x,xd y)
{
return x.c<y.c;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d %d",&a[i].b,&a[i].c);
sort(a,a+n,cmp);
int ans=1;
int m=a[0].c;
for(int i=1;i<n;i++)
if(m<=a[i].b)
{
m=a[i].c;
ans++;
}
printf("%d\n",ans);
return 0;
}