ABC389F 题解

ABC389F 题解

Keyword

转化,值域区间加减 1

题意

不多赘述了,直接搜索题面即可。

分析

一个很感性的理解就是:初始分数越高,最后的分数也会越高(至少不会更低)

这个特性是因为,每次得分最多也就能 +1 。先不论这道题,来看一个很基础的数学模型。

有一个 若干个数组成的数组 an ,其中每个元素都有一个对应的 rank。我们对其中的元素进行任意次操作,每一次取出[li,ri] 的元素,并进行 +1 ,那么操作完成之后每个元素对应的 rank 实际上是不会发生改变的(容易理解)。

这其实在 CF980 左右的场次(记不太清了)出过一道 B 题,同样的背景,只询问操作之后的最值,那么只用关注单点即可。

回到这道题上来,我们定义 fi起始分数为 i ,最后能得到的对应分数 ,首先 f 本身是单调增加的,我们会进行若干次对 [li,ri] 中的数 +1 的操作,但是无论进行多少次,这个数组本身一定会保持单调不降(前面已经说明过了)。

所以对于每一次操作,我们二分一下就可以得知操作的左右端点在哪里,然后套一个数据结构就可以 O(nlog2n) 通过了。

但是这并不是最优秀的复杂度,线段树二分可以做到 O(nlogn) ,然而我还没学,这里挖个坑。。。

Code_naive

Code_better

posted @   Hanggoash  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
动态线条
动态线条end
点击右上角即可分享
微信分享提示