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

树状数组_一维

时间:2018-07-21 18:51:13      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:return   get   []   mem   最大值   div   int   tree   sum   

// 模板水题 敌兵布阵 HDU - 1166
class TreeArray{
public:
    const static int cmaxn = 1e5;  /// Todo:  修改区间的最大值
    int cdate[cmaxn]; 
    int max_sz;  // 表示元素的个数 在init初始化
    
    void init(int size) {
        memset(cdate, 0, sizeof(cdate));
        max_sz = size; // 初始化本次样例的元素的个数
    }
    
    void init(int size, int array[], int len) {
        memcpy(cdate, array, sizeof(int)*len);
        max_sz = size;
    }
    
    inline int lowbit(int idx) { return idx & -idx; }
    void update(int idx, int val) {
        for (; idx<=max_sz; idx+=lowbit(idx)) 
            cdate[idx] += val;
    }
    
    int getsum(int idx) {
        int res = 0;
        for (; idx>0; idx-=lowbit(idx)) 
            res += cdate[idx];
        return res;
    }
    
    int getsum(int left, int right) {
        return getsum(right) - getsum(left-1);
    }
};

 

树状数组_一维

标签:return   get   []   mem   最大值   div   int   tree   sum   

原文地址:https://www.cnblogs.com/cgjh/p/9347549.html

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