洛谷P1803
輸出:
輸入:
3
0 2
2 4
1 3
輸出:
2
思路:題意可以轉化爲找儘量多的不重複區間。
AC代碼:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
struct Node
{
int l,r;
}a[maxn];
bool cmp(const Node &a,const Node &b)
{
if(a.r==b.r)//結束時間相同,按開始時間升序排序
return a.l<b.l;
return a.r<b.r;//按結束時間升序排序
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].l>>a[i].r;
sort(a+1,a+n+1,cmp);//按結束時間升序排序
int cnt=1;//第一場比賽最早結束,必選
int now=1;//當前比賽爲第一場比賽
for(int i=2;i<=n;i++)
if(a[i].l>=a[now].r)//某場比賽開始時間大於等於當前比賽結束時間
{
now=i;//更新
cnt++;//又能多參加一場了
}
cout<<cnt<<endl;
return 0;
}