zoukankan      html  css  js  c++  java
  • 51nod 1428 活动安排问题(优先队列)

    1428 活动安排问题

    首先按照开始时间从小到大排序.

    其实只要维护一个结束时间的最小堆,每次比较开始时间和堆中最小时间的大小,如果比它大就放入堆中并且时间就要变成当前任务的结束时间,

    否则就要新开一个教室.并且把结束时间加入堆中,注意判断堆是否为空.

    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <algorithm>
    using namespace std;
    struct point
    {
        int x,y;
        bool operator < (const point a) const
        {
            return x<a.x;
        }
    }p[10001];
    
    int main()
    {
        int n;
        priority_queue<int,vector<int>,greater<int> >que;
        scanf("%d",&n);
        for(int i=0;i<n;i++) scanf("%d%d",&p[i].x,&p[i].y);
        sort(p,p+n);
        //for(int i=0;i<n;i++) printf("%d %d
    ",p[i].x,p[i].y);
        que.push(p[0].y);
        int ans=1;
        for(int i=1;i<n;i++)
        {
            if(!que.empty())
            {
                int a=que.top();
                //printf("%d
    ",p[i].x);
                if(p[i].x>=a)
                {
                    que.pop();
                    a=p[i].y;
                    que.push(a);
                }
                else
                {
                    ans++;
                    que.push(p[i].y);
                }
            }
            else
            {
                ans++;
                que.push(p[i].y);
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    落忆枫音(我们终将成为”枫音乡的过客“)
    PID221 / 烦人的幻灯片☆ x
    codevs 5971 打击犯罪 x
    洛谷 P2330 [SCOI2005] 繁忙的都市 x
  • 原文地址:https://www.cnblogs.com/yoyo-sincerely/p/5656743.html
Copyright © 2011-2022 走看看