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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章