5-2 Windows消息队列 (25分)
5-2 Windows消息队列 (25分)
消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。
输入格式:
输入首先给出正整数N(\le 10^5≤105),随后N行,每行给出一个指令——GET
或PUT
,分别表示从队列中取出消息或将消息添加到队列中。如果指令是PUT
,后面就有一个消息名称、以及一个正整数表示消息的优先级,此数越小表示优先级越高。消息名称是长度不超过10个字符且不含空格的字符串;题目保证队列中消息的优先级无重复,且输入至少有一个GET
。
输出格式:
对于每个GET
指令,在一行中输出消息队列中优先级最高的消息的名称和参数。如果消息队列中没有消息,输出EMPTY QUEUE!
。对于PUT
指令则没有输出。
输入样例:
9
PUT msg1 5
PUT msg2 4
GET
PUT msg3 2
PUT msg4 4
GET
GET
GET
GET
输出样例:
msg2
msg3
msg4
msg1
EMPTY QUEUE!
- 时间限制:150ms
- 内存限制:64MB
- 代码长度限制:16kB
- 判题程序:系统默认
- 作者:DS课程组
啊哈,建立一个最小堆,然后瞎搞就好了;
#include <stdio.h>
#include <string.h>
struct BST{int w;char s[110];
}q[400040];int main()
{int Size=0,n,i;char tx[5],ch[5];int tp;scanf("%d",&n);q[0].w=-1000000000;while(n--){scanf("%s",tx);if(strcmp("PUT",tx)==0){scanf("%s%d",ch,&tp);i=++Size;for(;q[i/2].w>tp;i/=2){q[i].w=q[i/2].w;strcpy(q[i].s,q[i/2].s);}q[i].w=tp;strcpy(q[i].s,ch);}else{if(!Size)puts("EMPTY QUEUE!");else{char tt[10];printf("%s\n",q[1].s);int temp=q[Size].w;strcpy(tt,q[Size--].s);int child,parent;for(parent=1;parent*2<=Size;parent=child){child=parent*2;if(child!=Size&&(q[child+1].w<q[child].w))child++;if(temp<q[child].w)break;else{q[parent].w=q[child].w;strcpy(q[parent].s,q[child].s);}}q[parent].w=temp;strcpy(q[parent].s,tt);}}}return 0;
}
转载于:https://www.cnblogs.com/keyboarder-zsq/p/6777521.html
5-2 Windows消息队列 (25分)相关推荐
- 7-8 Windows消息队列 (25 分)
消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中.同时,如果队列不是空的,这一进程循环地从队列中 ...
- 7-26 Windows消息队列 (25 分)(详解+思路+超时解决)
一:题目 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中.同时,如果队列不是空的,这一进程循环 ...
- 7-26 Windows消息队列(25 分)
7-26 Windows消息队列(25 分) 消息队列是 Windows 系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当 ...
- 7-26 Windows消息队列
7-26 Windows消息队列(25 分) 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中. ...
- Windows消息队列
Windows消息队列(优先队列) 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中.同时,如果 ...
- 7-4 堆栈模拟队列 (25 分)
7-4 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判 ...
- Windows 消息队列
Windows 消息队列 消息队列的功能 使用消息队列的场合 1. 客户端常常从网络上断开连接 2. 客户端和服务端都在线 消息 1. 消息的类型 2. 消息优先级 3. 消息的传递模式 4. 事务消 ...
- windows消息队列。DispatchMessage。 PostMessage
如果HWND为NULL, 表明向当前线程发送Quit消息.. 大概是为了多任务的需要,Windows接管了所有的资源,以便于进行统一处理. 其中最××的就是接管了输入,并推出了消息队列的概念. Win ...
- UI线程和Windows消息队列
在Windows应用程序中,窗体是由一种称为"UI线程(User Interface Thread)"的特殊类型的线程创建的. 首先,UI线程是一种"线程",所 ...
最新文章
- 无盘服务器镜像包缓存设多少,【转】谈谈深度无盘缓存工具设置技巧
- 第一阶段:前端开发_Mysql——多表查询
- ulimit调优|设置普通用户的ulimit值
- python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
- jvm性能调优实战 - 29使用 jstat 摸清线上系统的JVM运行状况
- 理解css伪类和伪元素
- 项目经理的个人体会、经验总结
- Docker基本命令与使用 —— Docker容器(一)
- 基础算法之Dijkstra最短路径
- 苹果wwdc2019_我从苹果中学到的东西拒绝了我获得WWDC的奖学金
- php 添加样式,PHP实现可自定义样式的分页类
- SQLi LABS Less-12 联合注入+报错注入
- 算法面试:精选微软经典的算法面试100题(第21-25题)
- PHP 14:类的实例
- php libiconv close_undefined reference to `libiconv_open 无法编译PHP
- 论开学第二个月干了点啥
- HMM和DNN语音合成必备基础知识:音素和拼音的基础知识及工具初学
- 分布式环境搭建之Redis安装及使用
- 几种常见的软件团队模式优缺点总结
- 聊一聊RabbitMQ六种工作模式与应用场景
热门文章
- NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
- 好家伙,这才是最强的目标检测落地模型!
- ICCV2021多模态视频分析与推理比赛参赛邀请
- 推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
- 模型压缩+编译器优化,使AI算法在移动端性能超越专用硬件
- 伦敦帝国学院提出局部特征提取新模式D2D:先描述后检测
- 旷视提出Circle Loss,革新深度特征学习范式 |CVPR 2020 Oral
- python入门需要有什么基础?
- mysql聚合索引跟非聚合索引的区别_聚集索引和非聚集索引的区别有哪些
- 端到端半监督目标检测框架Instant-Teaching: