今年暑假不AC
贪心:“按右端点排序,能选就选,不能就不选。因为如果不能选的话,它的加入一定会导致至少一条线段的退出,并且还使得当前线段集的最右端点右移了,一定不优。”
并且不能用左端点贪心。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
typedef pair<int,int> PII;
const int N = 1e5+7;
vector<PII> a;
bool cmp(PII a,PII b){
return a.second<b.second;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n;
while(cin>>n&&n){
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
a.push_back({x,y});
}
sort(a.begin(),a.end(),cmp);
int ans=1,t=a[0].second;
for(int i=1;i<n;i++){
if(a[i].first>=t) ans++,t=a[i].second;
}
cout<<ans<<endl;
a.clear();
}
return 0;
}