HDU 1509 windows message queue
来源:互联网 发布:出境旅游数据 编辑:程序博客网 时间:2024/06/08 04:33
问题:消息队列是windows系统的重要基础。对于每一个进程,系统都包含一个消息队列。如果进程被触发,比如鼠标点击,文本转换,系统会给队列增加一个消息。期间,进程会循环按照优先级值从队列中取消息,在消息队列不为空的情况下。注意到低的优先级值代表高的优先级。这个问题中,你被要求模拟在消息队列中放消息和取消息的过程。
输入:只有一个案例测试。每一行是一个要求。GET 或者PUT,分布代表取放消息。PUT后面跟随一个字符串代表消息名称,两个整数代表参数和优先级。最多有60000个要求。注意到一个消息可以出现两次或者更多次,如果两个消息有同样的优先级,那么遵循FIFO,先入先出的原则。
输出:对于每一个GET指令,输出本次取出消息的名称和参数值,如果队列为空,输出”EMPTY QUEUE!“,PUT指令无输出。
Sample Input
GETPUT msg1 10 5PUT msg2 10 4GETGETGET
Sample Output
EMPTY QUEUE!msg2 10msg1 10EMPTY QUEUE!
import java.util.*;public class WMQ {public static void main(String[] args) {PriorityQueue<Message> pq = new PriorityQueue<Message>(60000,new MessageCom()); //优先级队列Scanner cin = new Scanner(System.in);int count = 0;while (cin.hasNext()) {String command = cin.next();if (command.equals("GET")) {if (pq.isEmpty())System.out.println("EMPTY QUEUE!");elseSystem.out.println(pq.poll());}if (command.equals("PUT")) {String name = cin.next();int parameter = cin.nextInt();int pValue = cin.nextInt();Message message = new Message(name, parameter, pValue, count++);pq.offer(message);}}}}class Message {public int parameter;public int pValue;public String name;public int id;public Message(String name, int parameter, int pValue, int id) {this.name = name;this.parameter = parameter;this.pValue = pValue;this.id = id;}public String toString() {return this.name + " " + this.parameter;}}class MessageCom implements Comparator<Message> { //创建一个实现了比较器的类,初入优先队列的创建中。public int compare(Message message1,Message message2) { //优先按优先值排序,如果优先值相等,则按先来的,id小的if (message1.pValue > message2.pValue)return 1;else if (message1.pValue < message2.pValue)return -1;else {if (message1.id < message2.id) {return -1;} else if (message1.id > message2.id) {return 1;} else {return 0;}}}}
0 0
- HDU 1509 Windows Message Queue
- hdu 1509 Windows Message Queue
- hdu 1509 Windows Message Queue
- HDU 1509 Windows Message Queue
- hdu 1509 Windows Message Queue
- HDU 1509 Windows Message Queue
- hdu 1509 Windows Message Queue
- HDU 1509 windows message queue
- HDU 1509 Windows Message Queue
- HDU 1509-Windows Message Queue
- Windows Message Queue HDU
- hdu 1509 Windows Message Queue<priority_queue>
- hdu 1509 Windows Message Queue 优先队列
- hdu 1509 Windows Message Queue(优先队列)
- HDU-1509-Windows Message Queue(优先队列)
- HDU 1509 Windows Message Queue 【优先队列】
- hdu-1509 Windows Message Queue(优先队列)
- HDU 1509:Windows Message Queue【优先队列】
- treap模版
- Mybatis框架
- activity window 获取setContentView的基视图(getContentView)
- Docker安装nginx
- 找工作——jvm复习(一)
- HDU 1509 windows message queue
- 电子工程师最关心的10个问题,看完有答案没?
- ubuntu 安装qt4
- 如何在Xib中添加自定义的属性?
- UVALive 4127
- nginx配置ssl
- 专题一 · 1005
- 待完善知识点
- 有关小波变换的介绍