[Jobdu] 题目1463:招聘会

题目描述:

又到毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。

输入:

第一行n,有n个招聘会,接下来n行每行两个整数表示起止时间,由从招聘会第一天0点开始的小时数表示。
n <= 1000 。

输出:

最多参加的招聘会个数。

样例输入:
3
9 10
10 20
8 15
样例输出:
2

经典的贪心算法题。

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 #include <cstdio>
 5 using namespace std;
 6 
 7 struct data {
 8     int st;
 9     int ed;
10 };
11 
12 bool cmp(const data &a, const data &b) {
13     return a.ed < b.ed;
14 }
15 
16 int main() {
17     //freopen("input.txt", "r", stdin);
18     vector<data> v;
19     data d;
20     int n;
21     int res;
22     int ed;
23     while (cin >> n) {
24         v.clear();
25 
26         for (int i = 0; i < n; ++i) {
27             cin >> d.st >> d.ed;
28             v.push_back(d);
29         }
30         sort(v.begin(), v.end(), cmp);
31         res = 1;
32         ed = v[0].ed;
33         for (int i = 0; i < n; ++i) {
34             if (v[i].st >= ed) {
35                 ed = v[i].ed;
36                 ++res;
37             }
38         }
39         cout << res << endl;
40     }
41     return 0;
42 }
原文地址:https://www.cnblogs.com/easonliu/p/3639596.html