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)的主要内容,如果未能解决你的问题,请参考以下文章