zoukankan      html  css  js  c++  java
  • COGS 1151 活动安排

    - 有 N 场活动,每场活动在特定的时间需要占用场地。

    - 如果有两场活动需要同一时间占用场地,则不能同时举行

    - 问最多能举行多少场活动?

    将所有活动按照结束时间从早到晚排序后贪心即可

    具体思路看代码注释吧

    如果要用的话记得加打开文件

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    struct activity
    {
        int start, end;
    }a[10005];
    int n;
    int cmp(const activity &a,const activity &b)
    {
        return a.end < b.end;
    }
    int main()
    {
        scanf("%d", &n);
        for(int i=0;i<n;i++) 
            scanf("%d%d",&a[i].start,&a[i].end);
        sort(a,a+n,cmp);//排序顺序按结束时间从小到大排
        int cur=0,ans=0;//cur是已经安排的最后一个活动的结束时间 
        for(int i=0;i<n;i++)//枚举每个活动 
            if(a[i].start>cur)//如果该活动开始时间晚于cur 
            {
                cur=a[i].end;
                ++ans;
            }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    rwkj 1337
    poj 1002
    map
    vector
    sort排序
    sort函数
    poj 2945
    poj2388
    rwkj 1422搜索(素数环)
    poj2503
  • 原文地址:https://www.cnblogs.com/kuaileyongheng/p/6816968.html
Copyright © 2011-2022 走看看