《ACM程序设计》书中题目 S-19 Message queue
来源:互联网 发布:淘宝主图尺寸750 编辑:程序博客网 时间:2024/06/03 17:38
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!
这道题的基本题意为输入PUT,输入数据;输入GET,输出一个优先级最高(先按第三个数据排序,如果相同按第一个数据排序)的数据,并移除该数据,如果没有数据可以输出则输出EMPTY QUEUE!
基本思路为定义一个结构体,并重新定义小于号,然后用该结构体的优先队列的相关操作完成输出。
源代码如下:
#include<bits/stdc++.h>
using namespace std;
struct shu
{ string a;
int b,c;
const bool operator<(const shu &d)const
{
if(c!=d.c)return c>d.c;
return a>d.a;
}
};
int main()
{ priority_queue<shu>s;
shu p;
string n,x;
int y,z;
while(cin>>n)
{
if(n=="GET"&&s.empty())cout<<"EMPTY QUEUE!"<<endl;
if(n=="GET"&&s.empty()!=1)
{
cout<<s.top().a<<" "<<s.top().b<<endl;
s.pop();
}
if(n=="PUT")
{ cin>>x>>y>>z;
p.a=x;
p.b=y;
p.c=z;
s.push(p);
}
}
}
思路不是太难,但是需要用到优先队列的很多知识,对STL的使用还不是很熟练,需要进一步的练习。
- 《ACM程序设计》书中题目 S-19 Message queue
- 《ACM程序设计》书中题目 S
- acm程序设计书中题目第s题解析
- S-19 Message queue
- 《ACM程序设计》书中题目
- 《ACM程序设计》书中题目--problem j
- 《ACM程序设计》书中题目 J
- 《ACM程序设计》书中题目O-15
- 《ACM程序设计》书中题目M-13
- 《ACM程序设计》书中题目--problem o
- 《ACM程序设计》书中题目--problem u
- 《ACM程序设计》书中题目―K
- 《ACM程序设计》书中题目 U
- 《ACM程序设计》书中题目 N
- 《ACM程序设计》书中题目 T
- 《ACM程序设计》书中题目 K
- 《ACM程序设计》书中题目--problem l
- ACM程序设计》书中题目--problem t
- 102. Binary Tree Level Order Traversal
- 一个简单的Ajax二级联动下拉菜单
- jQuery保存cookie
- OrmLite框架 —— OrmLite 框架封装及使用
- acm程序设计书中题目第s题解析
- 《ACM程序设计》书中题目 S-19 Message queue
- 位运算
- React从入门到精通系列之(14)refs和DOM元素
- HDU
- leetcode 100. Same Tree
- docker系列一,认识初步
- <table>表格标签
- easyui 生成 菜单结构树 02
- 【BZOJ3996】【TJOI2015】线性代数(最小割)