自己yy的一个奇怪东西

馋奶兔 提交于 2019-11-28 06:30:34

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

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

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

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

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

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

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

于是查询\(T(n)=T(\sqrt{n})+O(1)=O(1)\)

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

复杂度一脸正确?

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!