排序
本来我们最开始是想把序列的操作转化为单点操作的
想一下我们遇到过的序列转单点的方法:差分、前驱后继
所以这题本来想用差分的,但是排了序之后差分数组是无法确定的(可以手动模拟样例就知道为啥无法确定了)
然而这题目还给了我们一个提示:只需要知道最后时刻第\(q\)个位置上的数
所以我们可以考虑二分这个数是什么
那么怎么处理排序呢?
先来看看这道题
由于只关心相对大小,把比\(b\)大的变为\(1\),小的变为\(0\)就很好做了
再回到这道题目
普通排序不好搞,但是\(01\)排序是很好搞的,可以记住这个思想
于是我们按照类似的操作进行处理即可,具体见洛谷题解
为啥具有单调性?
我们不管每次二分的是啥,每次check的操作都是一样的,这就意味着我们最后得到的真实序列是唯一的,在第\(p\)个位置上的数也是一定的,我们二分了值mid,如果小于等于答案,那么我们得到的最终的\(01\)序列的第\(p\)个数一定是\(0\),反之一定是\(1\),就肯定具有单调性了
洛谷题解里面还有在线的操作,涉及线段树分裂与合并,有空学一下