排序

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

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

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

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

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

那么怎么处理排序呢?

先来看看这道题

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

再回到这道题目

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

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

为啥具有单调性?

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

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

posted @   最爱丁珰  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示