码迷,mamicode.com
首页 > 编程语言 > 详细

树状数组

时间:2017-01-25 17:23:50      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:ons   树状数组   class   const   return   pos   span   数组   树状   

 1 //一、 树状数组(BT)的第 i 位存储的是以 i 为结尾的长度为lowbit(i) 的一段的和
 2 int lowBit(x) {
 3     return x & -x;
 4 }//lowBit 补码(正数变负数,先减去1之后按位取反(0→1,1→0)eg:-1=-(1)=-(0001-1)=-(0000)=1111) 
 5 int lowBit(x) {
 6     return x & -x;
 7 }
 8 const int maxn = 100003;
 9 int n, bt[maxn];
10 void btAdd(int pos, int delta) {
11     for (; pos <= n; pos += lowBit(pos)) {
12         bt[pos] += delta;
13     }
14 }
15 int btSum(int pos) {
16     int ans = 0;
17     for (; pos; pos -= lowBit(pos)) {
18         ans += bt[pos];
19     }
20     return ans;
21 }
22 int main() {
23 }

 

树状数组

标签:ons   树状数组   class   const   return   pos   span   数组   树状   

原文地址:http://www.cnblogs.com/9pounds15pence/p/6349637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!