zoukankan      html  css  js  c++  java
  • hdu1873 看病要排队 优先队列

    看病要排队
    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
    Submit Status

    Description

    看病要排队这个是地球人都知道的常识。 
    不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。 

    现在就请你帮助医院模拟这个看病过程。
     

    Input

    输入数据包含多组测试,请处理到文件结束。 
    每组数据第一行有一个正整数N(0<N<2000)表示发生事件的数目。 
    接下来有N行分别表示发生的事件。 
    一共有两种事件: 
    1:"IN A B",表示有一个拥有优先级B的病人要求医生A诊治。(0<A<=3,0<B<=10) 
    2:"OUT A",表示医生A进行了一次诊治,诊治完毕后,病人出院。(0<A<=3)
     

    Output

    对于每个"OUT A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。 
    诊治人的编号ID的定义为:在一组测试中,"IN A B"事件发生第K次时,进来的病人ID即为K。从1开始编号。 
     

    Sample Input

    7 IN 1 1 IN 1 2 OUT 1 OUT 2 IN 2 1 OUT 2 OUT 1 2 IN 1 1 OUT 1
     

    Sample Output

    2 EMPTY 3 1 1
     
     
    优先队列
    #include<stdio.h>
    #include<algorithm>
    #include<queue>
    #include<string>
    #include<string.h>
    #include<iostream>
    using namespace std;
    struct Node{
        int yx;
        int id;
        bool operator <(const Node& t2)const{
            if(yx!=t2.yx) return yx<t2.yx;
            return id>t2.id;
        }
    };
    int main(){
        int n;
        while((scanf("%d",&n))!=EOF){
            priority_queue<Node>doc[4];
            int id=1;
            Node tmp;
            for(int i=0;i<n;i++){
               string op; 
               cin>>op; 
               if(op=="IN"){
                    int a,b;
                    scanf("%d%d",&a,&b);
                    tmp.yx=b;
                    tmp.id=id;
                    id++;
                    doc[a].push(tmp);
                }else if(op=="OUT"){
                    int a;
                    scanf("%d",&a);
                    if(doc[a].empty()){
                        printf("EMPTY
    ");
                    }else{
    
                        printf("%d
    ",doc[a].top().id);
                        doc[a].pop();
                    }
                }
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    wex5 实战 框架拓展之2 事件派发与data刷新
    wex5 实战 框架拓展之1 公共data组件(Data)
    wex5 实战 HeidiSQL 导入Excel数据
    wex5 实战 手指触屏插件 hammer的集成与优劣
    wex5 实战 登陆帐号更换与用户id一致性
    wex5 实战 用户点评与提交设计技巧
    wex5 实战 省市县三级联动与地址薄同步
    wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
    wex5 实战 单页模式下的多页面数据同步
    [BZOJ]4237: 稻草人
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/5691362.html
Copyright © 2011-2022 走看看