2022牛客OI赛前集训营-提高组(第一场) 奇怪的函数 根号很好用

奇怪的函数

考虑暴力,每次查询\(O(n)\)扫所有操作,修改\(O(1)\)

这启发我们平衡复杂度,考虑分块。

观察题目性质,可以发现,经过若干次操作后得到的结果一定是一个关于\(x\)的分段函数,图像分为三段,且第一段和第三段斜率为0,中间斜率为1。那么只需要简单地记下拐点的坐标就可以表示这个函数。

简单分类讨论一下,可以线性处理出我们要的分段函数。

那么就很简单了,分\(B\)块维护分段函数,每次修改暴力重构整个块,查询遍历每个块,复杂度为\(O(q(B+\frac{n}{B}))\)\(B=\sqrt{n}\)可得\(O(q\sqrt{n})\)

相比线段树的合并分段函数,显然这样比较好写。

posted @ 2022-10-06 14:49  DCH233  阅读(105)  评论(0编辑  收藏  举报