zoukankan      html  css  js  c++  java
  • POJ 3190 priority_queue 贪心

    思路:
    贪心?就算是吧
    先把所有的开始时间排个序
    如果当前的能匹配上已有的牛栏,就找开始时间最早的那个。
    否则新加一个牛栏
    整个过程用priority_queue实现就OK了。。

    //By SiriusRen
    #include <queue>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int n,t=1,s[55555];
    struct Node {int pos,begin,end;}node[55555];
    struct Sirius{int time,num;}jy;
    priority_queue<Sirius>pq;
    bool operator<(Sirius a,Sirius b){return a.time>b.time;}
    bool cmp(Node a,Node b){return a.begin<b.begin;}
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d%d",&node[i].begin,&node[i].end);
            node[i].pos=i;
        }
        sort(node+1,node+1+n,cmp);
        jy.num=1;jy.time=node[1].end;
        pq.push(jy);
        s[node[1].pos]=1;
        for(int i=2;i<=n;i++){
            if(node[i].begin>pq.top().time){
                jy=pq.top();
                pq.pop();
                s[node[i].pos]=jy.num;
                jy.time=node[i].end;
                pq.push(jy);
            }
            else{
                t++;
                jy.time=node[i].end;
                jy.num=t;
                s[node[i].pos]=t;
                pq.push(jy);
            }
        }
        printf("%d
    ",t);
        for(int i=1;i<=n;i++)printf("%d
    ",s[i]);
    }

    这里写图片描述

  • 相关阅读:
    Freemarker与Springmvc
    Freemarker与普通java
    Freemarker与Servlet
    跳舞的时间插件
    video标签播放视频
    字符串反转
    菲波拉契数列
    求所有子数组的和的最大值
    Spring AOP 5种通知与java动态代理
    线程维护日志队列
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532300.html
Copyright © 2011-2022 走看看