[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 }