排序

发布时间 2023-12-23 15:50:53作者: 最爱丁珰

本来我们最开始是想把序列的操作转化为单点操作的

想一下我们遇到过的序列转单点的方法:差分、前驱后继

所以这题本来想用差分的,但是排了序之后差分数组是无法确定的(可以手动模拟样例就知道为啥无法确定了)

然而这题目还给了我们一个提示:只需要知道最后时刻第\(q\)个位置上的数

所以我们可以考虑二分这个数是什么

那么怎么处理排序呢?

先来看看这道题

由于只关心相对大小,把比\(b\)大的变为\(1\),小的变为\(0\)就很好做了

再回到这道题目

普通排序不好搞,但是\(01\)排序是很好搞的,可以记住这个思想

于是我们按照类似的操作进行处理即可,具体见洛谷题解

为啥具有单调性?

我们不管每次二分的是啥,每次check的操作都是一样的,这就意味着我们最后得到的真实序列是唯一的,在第\(p\)个位置上的数也是一定的,我们二分了值mid,如果小于等于答案,那么我们得到的最终的\(01\)序列的第\(p\)个数一定是\(0\),反之一定是\(1\),就肯定具有单调性了

洛谷题解里面还有在线的操作,涉及线段树分裂与合并,有空学一下