一个优化复杂度的技巧
查看原帖
一个优化复杂度的技巧
93465
Celestial_Scarlet楼主2023/3/23 14:41

省流:平衡复杂度。

过于 trivial,所以不写题解了。
但是现有的题解又都没有提到这个东西,所以在这里补充说一下。


本题处理询问时,一般的写法是整除分块套树状数组,复杂度为 O(nlogn)O(\sqrt n\log n)

在整除分块中,考虑对 1B(Bn)1\sim B(B\ge \sqrt n) 的部分暴力计算。

这一段上只需要支持单点修改、单点查询,直接 O(1)O(1) 维护即可,复杂度为 O(B)O(B)

BnB\sim n 的部分仍然使用整除分块 + 树状数组。由于只有 O(nB)O(\frac nB) 个块,所以复杂度是 O(nlognB)O(\frac{n\log n}B).

B=O(nlogn)B=O(\sqrt{n\log n}),得到最优复杂度 O(nlogn)O(\sqrt{n\log n})

2023/3/23 14:41
加载中...