【清明】树状数组

类似于空间被优化了的线段树,同样可用于修改查询
树状数组能做到的线段树一定能做到,线段树能做的树状数组不一定能做到 比如不能查询区间最值
不过求和还是效率很高的

【清明】树状数组_第1张图片

联想一下线段树的图,作为一棵平衡二叉树,两个儿子都存在
然而查询的时候是可以不用右儿子的,会被问到的都是左儿子
所以树状数组,就像上图,所有的右儿子都被删除了

查询为什么log呢
因为lowbit

比如lowbit(x),就是只留下x在二进制下最低位的1
比如10的二进制是1010,lowbit(1010)=0010
然后就加加减减

代码实现见模板
http://blog.csdn.net/Loi_Shirley/article/details/53017930

扩展——二维树状数组
一维树状数组很容易扩展到二维
和线段树的拓展基本类似
变成矩形√ 求矩形和之类的

树状数组还可以用于求逆序对~
放在另一篇里√

你可能感兴趣的:(===【清明】===)