更快的静态区间查询

前置知识: 一种期望线性的静态区间查询

保持上文中的假设,在处理块内查询时,我们考虑在块上递归地建成上文中的结构。

由于每块的块长是原长的 Θ(n),递归深度不会超过 Θ(loglogn)。因此预处理的时空间复杂度均为 Θ(nloglogn) 的。

同理,单次查询时的复杂度是最劣 Θ(loglogn) 的(但是显然,在询问随机的情况下,期望复杂度仍为 O(1))。

如果你追求更快的查询,可以考虑类似倍增求 LCA 的方法,做到单次 O(logloglogn)

更进一步地,可以使用类似猫树地处理手段,将长度补齐到 2k,显然这最多使长度翻倍,因此长度仍是 Θ(n) 的。此时我们可以使用位运算和一些内置函数加快查询,做到最劣单次 Θ(1)

我们继续这种思路,考虑如何支持修改,考虑不再暴力预处理整块间的查询,而是将上文中结构建在整块查询上,这样我们就得到一个 O(n) 单次修改的算法。

posted @   weilycoder  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示