找点
时间限制:2000 ms | 内存限制:65535 KB
难度:2
- 描述
-
上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?
刚开始很不明白,但是画了几个数据就知道怎么回事了
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAX 100010
struct node
{
int l,r;
}edge[MAX];
int vis[MAX];
int cmp(node s1,node s2)
{
if(s1.r==s2.r)
return s1.l<s2.l;
return s1.r<s2.r;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
scanf("%d%d",&edge[i].l,&edge[i].r);
sort(edge,edge+n,cmp);
int cnt=edge[0].r,sum=1;
for(int i=1;i<n;i++)
{
if(edge[i].l>cnt)
{
cnt=edge[i].r;
sum++;
}
}
printf("%d
",sum);
}
return 0;
}