【貪心】活動安排

問題 A: 【貪心】活動安排3
時間限制: 1 Sec 內存限制: 128 MB
[提交] [狀態]
題目描述
設有n個活動的集合E={1,2,…,n},其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有一個活動能使用這一資源。每個活動i都有一個要求使用該資源的起始時間si和一個結束時間fi,且si<fi。如果選擇了活動i,則它在時間區間[si,fi)內佔用資源。若區間[si,fi)與區間[sj,fj)不相交,則稱活動i與活動j是相容的。也就是說,當fi≤sj或fj≤si時,活動i與活動j相容。選擇出由互相兼容的活動組成的最大集合。
輸入
第一行一個整數n(1≤n≤1000);
接下來的n行,每行兩個整數si和fi。
輸出
輸出互相兼容的最大活動個數。
樣例輸入 Copy
4
1 3
4 6
2 5
1 7
樣例輸出 Copy
2

我的代碼:
之前編譯錯誤一次:是因爲PII下面就寫成PLL了。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
 
using namespace std;
 
typedef pair<int,int> PII;
const int N = 1010;
int n;
PII p[N];
 
bool cmp(PII a, PII b)
{
    return a.second<b.second;
}
 
int main()
{
    ios::sync_with_stdio(false);
    while(cin>>n)
    {
        for(int i=0; i<n; i++)
            cin>>p[i].first>>p[i].second;
        sort(p, p+n, cmp);
 
        int k=p[0].second;
        int ans = 1;
        for(int i=1; i<n; i++)
        {
            if(k<=p[i].first)
            {
                k = p[i].second;
                ans++;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章