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

 

你可能感兴趣的:(job)