- 题目描述:
-
又到毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。
- 输入:
-
第一行n,有n个招聘会,接下来n行每行两个整数表示起止时间,由从招聘会第一天0点开始的小时数表示。
n <= 1000 。
- 输出:
-
最多参加的招聘会个数。
- 样例输入:
-
3
9 10
10 20
8 15
- 样例输出:
-
2
经典的贪心算法题。
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdio>
using namespace std; struct data {
int st;
int ed;
}; bool cmp(const data &a, const data &b) {
return a.ed < b.ed;
} int main() {
//freopen("input.txt", "r", stdin);
vector<data> v;
data d;
int n;
int res;
int ed;
while (cin >> n) {
v.clear(); for (int i = ; i < n; ++i) {
cin >> d.st >> d.ed;
v.push_back(d);
}
sort(v.begin(), v.end(), cmp);
res = ;
ed = v[].ed;
for (int i = ; i < n; ++i) {
if (v[i].st >= ed) {
ed = v[i].ed;
++res;
}
}
cout << res << endl;
}
return ;
}