https://www.bnuoj.com/v3/contest_show.php?cid=9154#problem/M

【Accepted】

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<queue>
  8. #include<stack>
  9. #include<map>
  10. using namespace std;
  11. int l,n;
  12. int main()
  13. {
  14. int T;
  15. scanf("%d",&T);
  16. int cas=;
  17. while(T--)
  18. {
  19. priority_queue<int,vector<int>,greater<int>> qr;
  20. priority_queue<int> ql;
  21. scanf("%d%d",&l,&n);
  22. int pos=;
  23. int dir=;
  24. int ans=;
  25. for(int i=;i<n;i++)
  26. {
  27. int op;
  28. scanf("%d",&op);
  29. if(op==)
  30. {
  31. int x;
  32. scanf("%d",&x);
  33. if(x<pos) ql.push(x);
  34. else qr.push(x);
  35. }
  36. else
  37. {
  38. if(!ql.empty()&&!qr.empty())
  39. {
  40. int t1=ql.top();
  41. int t2=qr.top();
  42. if(pos-t1==t2-pos)
  43. {
  44. if(dir==)
  45. {
  46. ans+=t2-pos;
  47. qr.pop();
  48. pos=t2;
  49. dir=;
  50. }
  51. else
  52. {
  53. ans+=pos-t1;
  54. ql.pop();
  55. pos=t1;
  56. dir=;
  57. }
  58. }
  59. else if(pos-t1<t2-pos)
  60. {
  61. ans+=pos-t1;
  62. ql.pop();
  63. pos=t1;
  64. dir=;
  65.  
  66. }
  67. else if(pos-t1>t2-pos)
  68. {
  69. ans+=t2-pos;
  70. qr.pop();
  71. pos=t2;
  72. dir=;
  73. }
  74. }
  75. else if(!ql.empty())
  76. {
  77. int t1=ql.top();
  78. ans+=pos-t1;
  79. ql.pop();
  80. pos=t1;
  81. dir=;
  82. }
  83. else if(!qr.empty())
  84. {
  85. int t2=qr.top();
  86. ans+=t2-pos;
  87. qr.pop();
  88. pos=t2;
  89. dir=;
  90. }
  91. }
  92. }
  93. printf("Case %d: %d\n",++cas,ans);
  94. }
  95. return ;
  96. }

【优先级队列】 Holedox Eating的更多相关文章

  1. 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景

    说到队列的话,大家一定不会陌生,但是扯到优先级队列的话,还是有一部分同学是不清楚的,可能是不知道怎么去实现吧,其实呢,,,这东西已 经烂大街了...很简单,用“堆”去实现的,在我们系统中有一个订单催付 ...

  2. Java中的队列Queue,优先级队列PriorityQueue

    队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...

  3. 如何基于RabbitMQ实现优先级队列

    概述 由于种种原因,RabbitMQ到目前为止,官方还没有实现优先级队列,只实现了Consumer的优先级处理. 但是,迫于种种原因,应用层面上又需要优先级队列,因此需求来了:如何为RabbitMQ加 ...

  4. ACM/ICPC 之 优先级队列+设置IO缓存区(TSH OJ-Schedule(任务调度))

    一个裸的优先级队列(最大堆)题,但也有其他普通队列的做法.这道题我做了两天,结果发现是输入输出太过频繁,一直只能A掉55%的数据,其他都是TLE,如果将输入输出的数据放入缓存区,然后满区输出,可以将I ...

  5. java中PriorityQueue优先级队列使用方法

    优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果不提供Comparator的话,优先 ...

  6. stl的优先级队列

    #include <iostream> #include <vector> #include <queue> using namespace std; class ...

  7. 【python cookbook】【数据结构与算法】5.实现优先级队列

    问题:要实现一个队列,它能够以给定的优先级对元素排序,且每次pop操作时都会返回优先级最高的那个元素: 解决方案:采用heapq模块实现一个简单的优先级队列 # example.py # # Exam ...

  8. hdu------(4302)Holedox Eating(树状数组+二分)

    Holedox Eating Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  9. POJ 2227 The Wedding Juicer (优先级队列+bfs+dfs)

    思路描述来自:http://hi.baidu.com/perfectcai_/item/701f2efa460cedcb0dd1c820也可以参考黑书P89的积水. 题意:Farmer John有一个 ...

  10. 《Java数据结构与算法》笔记-CH4-6优先级队列

    /** * 优先级队列 * 效率:插入O(n),删除O(1).第12章介绍如何通过堆来改进insert时间 */ class PriorityQueue { private int maxSize; ...

随机推荐

  1. AJPFX简述Object类

    Object类是所有类的超类,所有类都拥有Object的方法.其中的toString.equals是对业务模型而言非常常用的方法.a)     toString方法当调用System.out.prin ...

  2. 访问TomCat出现的一些异常

    BUG-01:访问页面时出现: HTTP Status 500 servlet.init() for servlet DispatcherServlet threw exception...... 解 ...

  3. VS2015调用低版本lib库出现“无法解析的外部符号 __snprintf ”问题的解决

    VS2015在调用低版本lib库出现有时会出现“无法解析的外部符号 __snprintf ”的问题,解决方法是加入lib库“legacy_stdio_definitions.lib”到工程.

  4. js中传统事件绑定模拟现代事件处理

    大家都知道,IE中的现代事件绑定(attachEvent)与W3C标准的(addEventListener)相比存在很多问题, 例如:内存泄漏,重复添加事件并触发的时候是倒叙执行等. 下面是用传统事件 ...

  5. 判断空间上三个点是否共线问题【找bug篇】

    判断空间上三个点是否在同一直线上[找bug篇] 作者:Vashon 时间:20150601   发布时间:20150718 一.拿到问题,首先分析并理清思路. 判断三点是否在同一条直线上需满足以下几点 ...

  6. ubuntu下安装apcu扩展

    apcu前身是apc,apc分为系统缓存和用户缓存 1.系统缓存是指PHP执行时增加缓存,减少PHP文件的反复检查和编译,从而达到系统加速的目的. 2.用户缓存是指,PHP代码中将数据写入缓存,是用户 ...

  7. TCP/IP详解之IP协议

    1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制 ...

  8. 30行代码消费腾讯人工智能开放平台提供的自然语言处理API

    腾讯人工智能AI开放平台上提供了很多免费的人工智能API,开发人员只需要一个QQ号就可以登录进去使用. 腾讯人工智能AI开放平台的地址:https://ai.qq.com/ 里面的好东西很多,以自然语 ...

  9. vue 数据没有驱动视图?

    Part.1  问题 数据改变,视图却没有根据数据而改变. 原因在于,数据并不在 vue 监听范围之内,vue 只对事先在 data 中声明的变量丶对象等类型数据进行监听 Part.2  例子 < ...

  10. JavaScript/JQuery radioButton(单选按钮)练习20190409

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...