反向树状数组

\(\DeclareMathOperator{\lowbit}{lowbit}\)
对于正向树状数组,\(a_i\) 表示 区间 \((i - \lowbit(i), i]\) 中的信息,对于反向树状数组 \(a_i\) 表示区间 \([i, i+\lowbit(i))\) 中的信息。

正向树状数组支持查询区间 \([1,i]\) 中的信息,反向树状数组支持查询区间 \([i, n]\) 中的信息,其中 \(n\) 表示数组长度。

正向树状数组查询时是不断地 \(i \gets i - \lowbit(i)\),更新时是不断地 $ i \gets i + \lowbit(i)$;
反向树状数组正好反过来,查询时是不断地 $ i \gets i + \lowbit(i) $,更新时是不断地 $ i \gets i - \lowbit(i) $ 。

posted @ 2018-07-25 21:53  Pat  阅读(633)  评论(0编辑  收藏  举报