活动安排
贪心,尽可能安排多的活动,那就从结束时间开始去排序,第一个先结束的找到最小的大于或等于结束时间的开始时间,后面就按照这样遍历便是最优的解法。
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
const int N = 1010;
PII a[N];
bool cmp(PII a, PII b) {
return a.y < b.y;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
for (int i = 0; i < n; i ++) {
cin >> a[i].x >> a[i].y;
}
sort(a, a + n, cmp);
int t = a[0].y;
int ans = 1;
for (int i = 1; i < n; i++) {
if (a[i].x >= t) {
ans ++;
t = a[i].y;
}
}
cout << ans << "\n";
return 0;
}