CDOJ1339 郭大侠与线上游戏(维护一个set中的中位数——平衡树/双set)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CDOJ1339 郭大侠与线上游戏(维护一个set中的中位数——平衡树/双set)相关的知识,希望对你有一定的参考价值。

http://acm.uestc.edu.cn/#/problem/show/1339

题意:有三种操作,分别是、

   1、向队列推入一个数x。

   2、弹出这个队列的第一个数字

   3、查询这个队列的中位数是多少。

   中位数定义为该队列升序排序后第k/2+1个数

   操作总数n<=1e6

分析:

  当然最裸的想法就是直接平衡树

  这里提另外一个巧妙的用set的做法

  很显然问题的关键就是求中位数,如果不是求中位数,而是求最大值或最小值,那么很显然直接set,实际上中位数不就是“一半”数的最小值问题吗?

  可以维护两个set:A,B

  保证A中元素都小于等于B中元素,并且size(A)==size(B)或size(A)==size(B)-1

  那么很显然,每次的答案就是Bset中的最小值

  而维护操作,容易看出每次都是logn级别的

  

 

以上是关于CDOJ1339 郭大侠与线上游戏(维护一个set中的中位数——平衡树/双set)的主要内容,如果未能解决你的问题,请参考以下文章

郭大侠与Rabi-Ribi (优先队列)

下载历史版本项目 与线上建立连接

线上操作与线上问题排查实战

npm包发布---本机发布与线上发布

鸟哥 04 首次登陆与线上求助

线上操作与线上问题排查实战