码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-04-13 21:22:14      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:问题   size   级别   题意   最小   并且   最大   log   最大值   

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)

标签:问题   size   级别   题意   最小   并且   最大   log   最大值   

原文地址:http://www.cnblogs.com/wmrv587/p/6705743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!