喜+1树

突然在思考一些理性愉悦的东西...(其实复杂度不是很好,但是感觉速度会不错)

问题是单点+1,前缀和

我们考虑普通的线段树,它的ins/qry复杂度都是log_2(n),看起来很不错..?

当然更方便的是用BIT啦..

然而这完全没有考虑到机器可以一次处理很多位,它这个log_2很浪费诶..

我们假设机器字长是w.

我们对每个节点维护2k个儿子与ps,现在查询复杂度变成了log_{2k}(n)

考虑如何更新儿子的ps..

因为只有+1,那么我们可以将ps分两个部分记:

一个部分是ps的低k位,总共k*2^k(<=w)位

另一个部分是高w-k位.

我们先预处理出2k的表,让每次+1都可以直接+到ps的低位中,然后我们可以用位运算特技获得对高位进位的那些ps,然后进位,易知在2k次+1操作最多进位2^k次,那么就是均摊O(1).

那么修改复杂度就是均摊log_{2^k}(n)

然后现在易知2^k>=w/log_2(w)

然后复杂度就有点像fusion tree了..2333

然而功能太局限了并没有什么卵用= =..

posted @ 2016-12-19 16:09  zball  阅读(178)  评论(0编辑  收藏  举报