题目
区间贪心
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
struct node{int a;int b;}p[1000005];
bool check(node a,node b)///区间的开始时间前的排在前面,开始时间相同的结束时间前的排在前面
{
if(a.a==b.a) return a.b<b.b;
return a.a<b.a;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>p[i].a>>p[i].b;
}
sort(p,p+n,check);
int cnt=1;int now=p[0].b;///now是当前时间/比赛结束时间
//for(int i=0;i<n;i++) cout<<p[i].a<<' '<<p[i].b<<endl;
for(int i=1;i<n;i++)
{
if(now<=p[i].a) {cnt++;now=p[i].b;}///若结束时间在第i场比赛开始时间之前,则多一场
if(now>p[i].b) now=p[i].b;///结束时间大于第i场的结束时间,则将当前时间更新为第i场的结束时间
}
if(n==0) cnt=0;
cout << cnt << endl;
return 0;
}