HDU1509(优先级队列+模拟)
来源:互联网 发布:新理念外语网络答案 编辑:程序博客网 时间:2024/06/05 18:25
Windows Message Queue
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2271 Accepted Submission(s): 888
Problem Description
Message queue is the basic fundamental of windows system. For each process, the system maintains a message queue. If something happens to this process, such as mouse click, text change, the system will add a message to the queue. Meanwhile, the process will do a loop for getting message from the queue according to the priority value if it is not empty. Note that the less priority value means the higher priority. In this problem, you are asked to simulate the message queue for putting messages to and getting message from the message queue.
Input
There's only one test case in the input. Each line is a command, "GET" or "PUT", which means getting message or putting message. If the command is "PUT", there're one string means the message name and two integer means the parameter and priority followed by. There will be at most 60000 command. Note that one message can appear twice or more and if two messages have the same priority, the one comes first will be processed first.(i.e., FIFO for the same priority.) Process to the end-of-file.
Output
For each "GET" command, output the command getting from the message queue with the name and parameter in one line. If there's no message in the queue, output "EMPTY QUEUE!". There's no output for "PUT" command.
Sample Input
GETPUT msg1 10 5PUT msg2 10 4GETGETGET
Sample Output
EMPTY QUEUE!msg2 10msg1 10EMPTY QUEUE!
优先级队列模拟
#include<iostream>using namespace std;#define IF 1000000typedef struct node{ node* child; node* father; char name[10]; int paremeter; int pripority;}queuenode;int main(){ char commond[5]; queuenode *head,*rear,*p,*q; head=new queuenode; rear=head; //strcpy(rear->name,"head");// rear->pripority=IF; rear->father=head; head->child=rear; while(scanf("%s",commond)!=EOF) { if(strcmp(commond,"GET")==0) { if(rear->father==rear) cout<<"EMPTY QUEUE!"<<endl; else { p=rear; q=p; while(p!=head) { if(q->pripority>=p->pripority) q=p; p=p->father; } if(rear==q)rear=rear->father; q->child->father=q->father; q->father->child=q->child; cout<<q->name<<" "<<q->paremeter<<endl; delete q; } } else { p=new queuenode; head->father=p; p->child=head; p->father=rear; rear->child=p; rear=p; scanf("%s%d%d",p->name,&p->paremeter,&p->pripority); } } return 0;}
- HDU1509(优先级队列+模拟)
- hdu1509堆 优先级队列
- hdu1896(模拟+优先级队列)
- HDU1509(队列应用)
- hdu1509(优先队列)
- 用数组模拟 优先级队列
- Java 模拟队列(一般队列、双端队列、优先级队列)
- HDU1509-优先队列-Windows消息队列
- hdu1509
- hdu1509
- hdu1509
- 利用优先级队列实现事件驱动模拟
- 【C++】优先级队列的模拟实现
- hdu1509 Windows Message Queue(优先队列)
- hdu1509(Windows Message Queue) 优先队列
- HDU1509(STL优先队列初学)
- HOJ 2778 CPU scheduling(STL 优先级队列+模拟)
- C++模拟实现堆heap和优先级队列poriorty_queue
- oracle常用函数积累
- Ruby on Rails,创建最简单的视图/控制器单元Hello World
- Java网络编程(一)- 一个简单的服务端/客户端应用程序
- 字母顺序问题
- 2013百度之星4.27月赛 题目一 Fir
- HDU1509(优先级队列+模拟)
- xml
- iframe和父页,window.open打开页面之间的引用
- Windows Touch 笔势
- 在Ecplise上搭建C\C++环境
- HDU1710(二叉树遍历)
- 缓慢渐变维度的处理方式
- VIJOS-P1294-拯救OIBH总部
- something about pedestrian detection