题目来源:

点击打开链接

题目翻译

消息队列是windows系统的基本基础。对于每个进程,系统都维护一个消息队列。如果这个过程发生某些事情,例如鼠标点击,文本改变,系统会向队列添加一条消息。同时,如果不是空的,该过程将根据优先级值从队列中获取消息。请注意,优先级越低意味着优先级越高。在这个问题中,系统会要求您模拟消息队列,以便将消息放入消息队列并从中获取消息。

输入:
输入中只有一个测试用例。每行是一条命令,“GET”或“PUT”,意思是获取消息或放置消息。如果命令是“PUT”,则有一个字符串表示消息名称,两个整数表示参数和优先级。最多会有60000个命令。请注意,一条消息可能出现两次或更多,如果两条消息具有相同的优先级,则首先要求处理的消息将先被处理。处理结束文件。

输出:对于每个“GET”命令,输出从消息队列中获取的命令,其名称和参数在一行中。如果队列中没有消息,请输出“EMPTY QUEUE!”。 “PUT”命令没有输出。

例子:

(输入)

GET
PUT msg1 10 5
PUT msg2 10 4
GET
GET
GET

(输出)

EMPTY QUEUE!

msg2 10

msg1 10

EMPTY QUEUE!

解题:

我的思路是,定义一个信息结构,每个信息点包括信息的名字、信息的参数、信息的优先级以及信息的请求顺序。

加上信息的请求顺序主要是为了区别同一优先级的信息的先后处理顺序。然后把信息点放到一个优先队列中,优

先队列的先后顺序为:优先级越低越重要,同一优先级的话,信息请求顺序越前越重要。遇到put就进队列,遇

到get,就判断队列是否为空,若不空则出队输出,若空就打印为空。具体看代码:

/*
c++/accepted
*/

#include<iostream>
#include<queue>
#include<string>
using namespace std; struct node { //定义信息点结构
int n, p, num; //n为参数,p为优先级,num为输入顺序
string s;
bool friend operator < (node a, node b) { //定义信息点的大小函数
if (a.p == b.p) //优先级相等,就比较输入顺序
return a.n > b.n;
return a.p > b.p; //优先级不等,就比较优先级
}
}an;
int main() {
string ss;
priority_queue<node> q;
int k = 1;
while (cin>>ss) {
if (ss[0] == 'G') { //为get则拿信息
if (q.empty()) {//判断队列是否为空
cout<<"EMPTY QUEUE!"<<endl;
}
else {
an = q.top();
cout << an.s << " " << an.num << endl;
q.pop();
}
}
else { //存信息
cin >> an.s;
cin >> an.num;
cin >> an.p;
an.n = k;
k++;
q.push(an);
}
}
return 0;
}

ACM解题之(ZOJ 2724)Windows Message Queue的更多相关文章

  1. zoj 2724 Windows Message Queue

    Windows Message Queue Time Limit: 2 Seconds      Memory Limit: 65536 KB Message queue is the basic f ...

  2. zoj 2724 Windows Message Queue(使用priority_queue容器模拟消息队列)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2724 题目描述: Message queue is the b ...

  3. zoj 2724 Windows Message Queue 优先队列

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1724 题目大意: 给出两种操作,GET要求取出当前队首的元素,而PUT会输入名 ...

  4. ZOJ 2724 Windows Message Queue (优先级队列,水题,自己动手写了个最小堆)

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  5. ZOJ 2724 Windows Message Queue (二叉堆,优先队列)

    思路:用优先队列 priority_queue,简单 两种方式改变队列 的优先级 (默认的是从大到小) #include<iostream> #include<queue> # ...

  6. hdu 1509 Windows Message Queue

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1509 Windows Message Queue Description Message queue ...

  7. hdoj 1509 Windows Message Queue【优先队列】

    Windows Message Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...

  8. Windows Message Queue(优先队列)

    欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) Windows Message Queue Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  9. Windows Message Queue

    Windows Message Queue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

随机推荐

  1. Office-Excel取消掉每次打开弹出的自定义项安装程序弹窗

    电脑重装了系统之后,重新安装了office2013,发现每次打开Excel都会弹出一个如下图所示的弹窗,比较烦人. 要取消掉这个弹窗也是比较简单的. 打开“文件”--“选项”--“加载项” 在下面的管 ...

  2. zombie process

    僵尸进程:子进程退出后,父进程还没有回收子进程的资源,那么这个子进程就处于僵尸状态.Q1:“资源”是些什么?Q2:父进程如何回收子进程的资源? 内核为每个终止子进程保存了一定量的信息,所以当终止进程的 ...

  3. PHP输出xls文件

    PHP输出xls文件 标签: phpexcelxmlcsvborderheader 2008-11-17 09:33 2611人阅读 评论(0) 收藏 举报  分类: WebDev(9)  版权声明: ...

  4. 李洪强漫谈iOS开发[C语言-002]-开发概述程序的本质与简单执行过程

    李洪强iOS开发之应用程序的本质与简单执行过程 什么叫程序? 就是一段执行指令 程序的两个状态: 保存状态(保存到硬盘上)   运行状态(由CPU执行) 代码可以执行吗? CPU(中央处理器-> ...

  5. iOS大文件分片上传和断点续传

    总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...

  6. Linux 脚本点滴知识积累

    1.以openwrt中的/etc/hotplug.d/button/00-button为例 . /lib/functions.sh do_button () { local button   ---- ...

  7. bootstrap-table接合knockout.js

    function responseHandler(data) { if (data.ErrorNo > 0) { return; } var count = data.Data.TotalRow ...

  8. 大数据(6) - MapReduce简易介绍入门

    一 MapReduce入门 MapReduce定义(简单来说就是hadoop的数据分析核心,理解其中的原理,则可以分析聚合一切需求) Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于 ...

  9. jsp a href怎么传参数?

    jsp中超链接传值使用键值对格式,多个键值对之间用&分隔,即<a href="show.jsp?name=tom&pass=123&score=78,5&quo ...

  10. Redis 安装成windows服务- 一主二从三哨兵,sentinel安装为Windows服务

    这里只做记录说明 Redis的主从配置网上很多文章,百度一大堆,安装流程应该都可以配置通.我使用的这篇文章 https://blog.csdn.net/u010648555/article/detai ...