自己yy的一个奇怪东西

Posted p-b-p-b

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己yy的一个奇怪东西相关的知识,希望对你有一定的参考价值。

散步的时候yy区间最值的不同分块做法,发现单点修改\(O(\sqrtn)\)查询\(O(1)\)的做法不是很会?

于是yy了一个奇怪做法,写出来看看。

考虑查询的时候两端的散点可以用前后缀最值查出来,所以只需要考虑中间的块。

中间这些块似乎比较恶心,不知道怎么做。

于是我们把每一个块的最值拎出来作为一个点,再分一次块,就成功地用\(O(1)\)的时间把问题变成了根号级别的子问题。

于是分块套分块套分块套……,似乎很对?

如果左右端点都在同一个块内那么不是很好玩,就对每一个块里面也分块,也是一个根号级别的子问题。

于是查询\(T(n)=T(\sqrtn)+O(1)=O(\log \log n)\)

那么修改的时候呢?要更新这一个块里面的分块、更新总体的分块、更新前后缀,好像就是\(T(n)=2T(\sqrtn)+\sqrtn\),也就是\(O(\sqrtn)\)的。

复杂度一脸正确?

update:hz大佬优化了一下,发现只需要分两层,在第二层块数是\(O(n^\frac 1 4)\)的,于是可以直接暴力维护任意两个块中间的最值。于是就真的是\(O(\sqrtn)-O(1)\)了。

而且这东西似乎可以维护任意可加且有结合律的信息?

以上是关于自己yy的一个奇怪东西的主要内容,如果未能解决你的问题,请参考以下文章

手机剪贴板经常出现奇怪的口令

spring源码-开篇

带有rails的datepicker js奇怪的东西

奇怪的东西

“Unknown Publisher”奇怪的证书问题

为啥 glColorPointer 不给三角形着色 - 以及 opengl es 的其他奇怪的东西