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

树状数组

时间:2017-02-16 14:01:23      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:ios   div   pre   result   lowbit   std   uil   using   竞赛   

参考来源:挑战程序设计竞赛[第二版] p 174

维基百科:https://zh.wikipedia.org/wiki/%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84

#include <iostream>
#include <cstdio>
using namespace std;

const int MAXN=10000;
int a[MAXN],bit[MAXN];
int N;  //N代表数组的元素个数


//求i的低位
int lowbit(int i){
    return i&(-i);
}

//初始化bit数组
void build(int N){
    bit[0]=0;
    for(int i=1;i<=N;i++){
        bit[i]=a[i];
        for(int j=i-1;j>=i-lowbit(i)+1;j--)
            bit[i]+=a[j];
    }
}

//把a[i]的值加上value
void edit(int i,int value){
    while(i<=n){
        bit[i]+=value;
        i+=lowbit(i);
    }
    
}


//获得a[1.....k]的值
int getresult(int k){
    int ans=0;
    while(k>0){
        ans+=bit[k];
        k-=lowbit(k);
    }
    
}

 

树状数组

标签:ios   div   pre   result   lowbit   std   uil   using   竞赛   

原文地址:http://www.cnblogs.com/IKnowYou0/p/6404775.html

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