2014年天勤计算机考研复试上机练习赛(2):世界杯来了

题目描述

2014年是世界杯年,小明作为一个资深球迷必然不会错过这场足球界的饕餮盛宴。但是由于比赛太多,而且并不是任何时间小明都能够看球赛,所以小明把他重点关注的那些球赛的转播时间表给你,希望你能够帮他合理安排一下,让他能够尽量多的看到完整的球赛。


输入格式

输入包含多组测试数据,每组输入的第一行是一个整数n(n<=100),表示小明重点关注的球赛数目。(实际上一届世界杯总共有64场球赛,这里我们假设一届世界杯最多有100场比赛)
接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i场球赛的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。(这里我们也不限制每场球赛必须是90分钟)

当n=0时,输入结束。


输出

对于每组输入,输出能完整看到的球赛的场数。


样例输入

8
39 81
16 79
87 93
81 90
79 83
97 100
87 98
89 100

样例输出

4

采用贪心算法即可。在可以观看的比赛中,每次都选择结束时间最早的比赛。

代码如下:

#include<iostream>
#include<queue>
#include<algorithm>
#include<functional>
#include<cstdio>
const int MAXN = 100;
using namespace std;
int main()
{
#ifdef ONLINE_JUDGE
#else
    freopen("D:\\in.txt", "r", stdin);
    freopen("D:\\out.txt", "w", stdout);
#endif
    int n(0);
    while (cin >> n)
    {
        if (n == 0)
            break;
        pair<int, int> itv[MAXN];
        for (int i = 0; i < n; i++)
        {
            cin >> itv[i].second >> itv[i].first;
        }
        sort(itv, itv + n);
        int ans(0), t(0);//t是最后所选工作的结束时间
        for (int i = 0; i < n; i++)
        {
            if (t <= itv[i].second)
            {
                ans++;
                t = itv[i].first;
            }
        }
        cout << ans << endl;
    }
  
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值