题目1463:招聘会
时间限制:1 秒
内存限制:128 兆
- 题目描述:
-
又到毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。
- 输入:
-
第一行n,有n个招聘会,接下来n行每行两个整数表示起止时间,由从招聘会第一天0点开始的小时数表示。
n <= 1000 。
- 输出:
-
最多参加的招聘会个数。
- 样例输入:
-
3 9 10 10 20 8 15
- 样例输出:
-
2
- 来源:
- 算法之美(面试算法每日一题系列)
- 注意编码。
-
#include <iostream> #include <stdio.h> #include <string.h> #include <string> #include <map> #include <vector> #include <set> #include <algorithm> #define Max(a,b) ((a)>(b)?(a):(b)) using namespace std; typedef long long LL ; const int size=1008 ; struct Me{ struct Meet{ int start_time ; int end_time ; friend bool operator <(const Meet A ,const Meet B){ return A.end_time<B.end_time ; } }; int N ; Meet meet[size] ; Me(){} Me(int n):N(n){} void read(){ for(int i=1;i<=N;i++) scanf("%d%d",&meet[i].start_time,&meet[i].end_time) ; sort(meet+1,meet+1+N) ; } int gao_qi(){ read() ; int i=2 ; int sum=1 ; int end_time=meet[1].end_time ; while(i<=N){ if(end_time<=meet[i].start_time){ sum++ ; end_time=meet[i].end_time ; } i++ ; } return sum ; } }; int main(){ int n ; while(cin>>n){ Me me(n) ; cout<<me.gao_qi()<<endl ; } return 0 ; }