这种区间的贪心好像都出“烂”了?
不过还是想写一下。。。
先按照区间左端点排序一下,然后搞个优先队列维护当前最小的右端点。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+10;
struct asd{
int x,y;
}q[N];
bool cmp(asd a, asd b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
priority_queue<int, vector<int>, greater<int> >que;
int main()
{
int n,x,y;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
q[i].x=x;
q[i].y=y;
}
sort(q,q+n,cmp);
que.push(q[0].y);
int ans = 0;
for(int i=1;i<n;i++)
{
while(!que.empty()&&q[i].y>que.top())
que.pop();
if(que.size())
ans++;
que.push(q[i].y);
}
printf("%d\n",ans);
return 0;
}