题解:CF2126G2 Big Wins! (hard version)
block_in_mc · · 题解
首先使用单调栈求出每一个数
考虑如何判定一个区间的中位数是否大于等于
即对于区间
这样就有了一个
考虑到要求的答案为中位数减最小值,在最小值增大时,中位数也要增大才会变得更优,所以我们可以从小到大枚举每一个数,并同时维护一个数
这样,在枚举新的一个数时,我们只需要每次判断
这样做,即使当前的数作为最小值所对应的中位数小于 $x
block_in_mc · · 题解
首先使用单调栈求出每一个数
考虑如何判定一个区间的中位数是否大于等于
即对于区间
这样就有了一个
考虑到要求的答案为中位数减最小值,在最小值增大时,中位数也要增大才会变得更优,所以我们可以从小到大枚举每一个数,并同时维护一个数
这样,在枚举新的一个数时,我们只需要每次判断
这样做,即使当前的数作为最小值所对应的中位数小于 $x