标签:问题 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