POJ4151:电影节

4151:电影节

 

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。

输入
多组数据。每组数据开头是n(n<=100),表示共n场电影。
接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间
n=0则数据结束
输出
对每组数据输出最多能看几部电影
样例输入
8
3 4
0 7 
3 8 
15 19
15 20
10 15
8 18 
6 12 
0
样例输出
3


  贪心算法经典题目。优先看结束时间最早的电影。因为如果选择看的不是结束时间最早的电影,那么看结束时间最早的电影一定有可能能看到更多部电影。
  将所有电影的结束时间按从小到大排序,一一判断能不能赶上看每一步电影即可。

代码如下:
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 const int maxn = 110;
 7 
 8 struct _movie {
 9     int t1;
10     int t2;
11 };
12 _movie movies[maxn];
13 int n;
14 
15 bool operator < ( _movie movie1,_movie movie2 )
16 {
17     return movie1.t2 < movie2.t2;
18 }
19 
20 int main()
21 {
22     while( cin >> n && n != 0 ) {
23         for( int i=0; i<n; i++ ) {
24             cin >> movies[i].t1 >> movies[i].t2 ;
25         }
26         sort(movies,movies+n);
27         int time = 0;
28         int ans = 0;
29         for( int i=0; i<n; i++ ) {
30             if( time <= movies[i].t1 ) {
31                 ans++;
32                 time = movies[i].t2;
33             }
34         }
35         cout << ans << endl;
36     }
37     return 0;
38 }

 

上一篇【POJ2393:Yogurt Factory】:https://www.cnblogs.com/pkuqcy/p/14939962.html

posted @ 2021-07-04 19:47  Ann-  阅读(203)  评论(0编辑  收藏  举报