题解:
根据比赛结束时间对比赛进行排序
简单的贪心思想
代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct {
int start;
int end;
}st;
st stu[1000005];
bool myCompare(st a, st b) {
if (a.end == b.end) {
return a.start > b.start;
}
else {
return a.end < b.end;
}
}
int main() {
std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int n;
cin >> n;
int sum = 1;
for (int i = 0; i < n; i++) {
cin >> stu[i].start >> stu[i].end;
}
sort(stu, stu + n, myCompare);
int flag = stu[0].end;
for (int i = 1; i < n; i++) {
if (stu[i].start >= flag) {
flag = stu[i].end;
sum++;
}
}
cout << sum << endl;
return 0;
}