贪心-最大不相交区间数量
重点
1. last表示前一个不相交区间的右端点的值,这个值越小越好
2. 如果下一个区间的左端点大于last则last区间就是一个不相交区间
3. 如果下一个区间点左端点在last的范围内,则这个区间的右端点如果比当前的last小,则这个不相交区间的范围应该更新,毕竟这样后面的区间的范围会更大
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 100010, INF = 0x3f3f3f3f;
typedef pair<int, int> PII;
vector<PII> v;
int n;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
int a, b;
cin >> a >> b;
v.push_back({a, b});
}
sort(v.begin(), v.end());
int res = 0, last = INF;
for (int i = 0; i < v.size(); i++) {
if (v[i].first > last) {
if (last != INF) res++;
last = v[i].second;
} else {
last = min(last, v[i].second);
}
}
if (last != INF) res++;
cout << res << endl;
return 0;
}