【贪心】活动安排

问题 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章