Algorithm,Ds,Binary Indexed Trees,树状数组,二分索引树

http://en.wikipedia.org/wiki/Fenwick_tree

#ifndef TREE_ARR_H
#define TREE_ARR_H
// index [1, 1024]
#define N 1025

#define Type int
Type arr[N];
// 核心lowbit函数
int lowb(int t) { return t & (-t); }
// 一个位置数值改变,由lowbit向后迭代
void add(int i, Type v) { for (; i < N; arr[i] += v, i += lowb(i)); }
// [1,i]和,由lowbit向前迭代 Type sum(
int i)//[1, i] { Type s = 0; for (; i > 0; s += arr[i], i -= lowb(i)); return s; } #endif // TREE_ARR_H

可扩展到到2维到多维

精髓是  一个位置数据的改变,对数时间可维护

基于区间减法