#include<bits/stdc++.h>
using namespace std;
priority_queue<int,vector<int>,greater<int>> heap;
typedef pair<int,int> PII;
const int N = 1e5+7;
PII c[N];
int n,cnt;
int sec[N];
int cmp(PII a,PII b)
{
if(a.first!=b.first)return a.first<b.first;
else return a.second<b.second;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
c[i]={a,b};
}
sort(c,c+n,cmp);
heap.push(c[0].second);
cnt++;
for(int i=1;i<n;i++)
{
if(c[i].first<=heap.top())
{
heap.push(c[i].second);
cnt++;
}
else
{
heap.pop();
heap.push(c[i].second);
}
}
printf("%d",cnt);
return 0;
}
原本思路:暴力tle了
for(int i=0;i<n;i++)
{
if(!st[i])
{
st[i]=1;
int t=c[i].second;
for(int j=i+1;j<n;j++)
{
if(st[j]==0&&c[j].first>t)
{
st[j]=1;
t=c[j].second;
}
}
cnt++;
}
}