5-2 Windows消息队列   (25分)

消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。

输入格式:

输入首先给出正整数N(\le 10^5≤10​5​​),随后N行,每行给出一个指令——GETPUT,分别表示从队列中取出消息或将消息添加到队列中。如果指令是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分)相关推荐

  1. 7-8 Windows消息队列 (25 分)

    消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中.同时,如果队列不是空的,这一进程循环地从队列中 ...

  2. 7-26 Windows消息队列 (25 分)(详解+思路+超时解决)

    一:题目 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中.同时,如果队列不是空的,这一进程循环 ...

  3. 7-26 Windows消息队列(25 分)

    7-26 Windows消息队列(25 分) 消息队列是 Windows 系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当 ...

  4. 7-26 Windows消息队列

    7-26 Windows消息队列(25 分) 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中. ...

  5. Windows消息队列

    Windows消息队列(优先队列) 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中.同时,如果 ...

  6. 7-4 堆栈模拟队列 (25 分)

    7-4 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判 ...

  7. Windows 消息队列

    Windows 消息队列 消息队列的功能 使用消息队列的场合 1. 客户端常常从网络上断开连接 2. 客户端和服务端都在线 消息 1. 消息的类型 2. 消息优先级 3. 消息的传递模式 4. 事务消 ...

  8. windows消息队列。DispatchMessage。 PostMessage

    如果HWND为NULL, 表明向当前线程发送Quit消息.. 大概是为了多任务的需要,Windows接管了所有的资源,以便于进行统一处理. 其中最××的就是接管了输入,并推出了消息队列的概念. Win ...

  9. UI线程和Windows消息队列

    在Windows应用程序中,窗体是由一种称为"UI线程(User Interface Thread)"的特殊类型的线程创建的. 首先,UI线程是一种"线程",所 ...

最新文章

  1. 无盘服务器镜像包缓存设多少,【转】谈谈深度无盘缓存工具设置技巧
  2. 第一阶段:前端开发_Mysql——多表查询
  3. ulimit调优|设置普通用户的ulimit值
  4. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
  5. jvm性能调优实战 - 29使用 jstat 摸清线上系统的JVM运行状况
  6. 理解css伪类和伪元素
  7. 项目经理的个人体会、经验总结
  8. Docker基本命令与使用 —— Docker容器(一)
  9. 基础算法之Dijkstra最短路径
  10. 苹果wwdc2019_我从苹果中学到的东西拒绝了我获得WWDC的奖学金
  11. php 添加样式,PHP实现可自定义样式的分页类
  12. SQLi LABS Less-12 联合注入+报错注入
  13. 算法面试:精选微软经典的算法面试100题(第21-25题)
  14. PHP 14:类的实例
  15. php libiconv close_undefined reference to `libiconv_open 无法编译PHP
  16. 论开学第二个月干了点啥
  17. HMM和DNN语音合成必备基础知识:音素和拼音的基础知识及工具初学
  18. 分布式环境搭建之Redis安装及使用
  19. 几种常见的软件团队模式优缺点总结
  20. 聊一聊RabbitMQ六种工作模式与应用场景

热门文章

  1. NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
  2. 好家伙,这才是最强的目标检测落地模型!
  3. ICCV2021多模态视频分析与推理比赛参赛邀请
  4. 推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
  5. 模型压缩+编译器优化,使AI算法在移动端性能超越专用硬件
  6. 伦敦帝国学院提出局部特征提取新模式D2D:先描述后检测
  7. 旷视提出Circle Loss,革新深度特征学习范式 |CVPR 2020 Oral
  8. python入门需要有什么基础?
  9. mysql聚合索引跟非聚合索引的区别_聚集索引和非聚集索引的区别有哪些
  10. 端到端半监督目标检测框架Instant-Teaching: