【刷题笔记】P2824 [HEOI2016/TJOI2016] 排序
P2824 [HEOI2016/TJOI2016] 排序
题解
首先考虑对于一个 \(01\) 序列怎么做:假设要对 \([l,r]\) 进行升序排序,设其中有 \(cnt_1\) 个 \(1\) ,则要把 \([r - cnt_1 + 1, r]\) 置为 \(1\),其余置为 \(0\),降序排序类似。这样就把 区间排序,转化为了 区间修改。
对于一个一般序列:假设要查询 \(p\) 位置上的值,则可以二分答案。具体来说,设当前二分的值为 \(x\),把 \(\ge x\) 的值设为 \(1\),其余设为 \(0\),这样就把一个一般序列转化为了一个 \(01\) 序列。若最后 \(p\) 位置上为 \(1\),则表示实际答案要大于等于二分值,否则表示小于二分值。
对于二分答案 单调性 证明:若二分值越大,则一个区间内的 \(1\) 个数一定单调不升,所以 \(p\) 位置上最后的值一定是从一段连续的 \(1\),转化为一段连续的 \(0\)。

浙公网安备 33010602011771号