【题解】CF1539F Strange Array 中位数 线段树区间合并 取整性质
若序列中的数互不相同,对于一个区间 \([l,r],l\le i\le r\) ,令 \(c_1\) 为区间中小于等于 \(a[i]\) 的位置的数量,\(c_2\) 为区间中大于 \(a[i]\) 的位置的数量。
对于 \(a[i]\) 在区间中的排名可以转化成小于等于 \(a[i]\) 的数的个数,中位数的排名为 \(\lceil \dfrac{c_1+c_2+1}{2} \rceil\) 。
取整性质:\(-\lceil r \rceil = \lfloor -r \rfloor,-\lfloor r \rfloor = \lceil -r \rceil\),\(\forall n\in Z,\lceil x + n\rceil = \lceil x \rceil + n,\lfloor x + n\rfloor = \lfloor x \rfloor + n\) 。
如果中位数 \(a[mid] <= a[i]\) ,那么 \(dis = c_1 - \lceil \dfrac{c_1+c_2+1}{2} \rceil = \lfloor \dfrac{c_1-c_2-1}{2} \rfloor\) 。
如果中位数 \(a[mid] >= a[i]\) ,那么 \(dis = \lceil \dfrac{c_1+c_2+1}{2} \rceil - c_1 = \lceil \dfrac{c_2+1-c_1}{2} \rceil\) 。
将序列上 \(> a[i]\) 的位置置成 \(1\) ,\(< a[i]\) 的位置置成 \(-1\) ,根据 \(a[i]\) 和中位数的关系分类讨论,将 \(a[i]\) 置成 \(-1\) 或 \(1\) 。
线段树维护前后缀 \(\max,\min\) 区间合并即可。
复杂度 \(O(n\log n)\) 。