美文网首页线段树
树状数组模板

树状数组模板

作者: 江海小流 | 来源:发表于2019-12-23 17:35 被阅读0次
# include <iostream>
# include <cstdlib>

class TreeArray {
    typedef long long value_t;

    private:
        value_t *p;
        int size;
    
    public:
        TreeArray(int n): size(n+1) {
            p = (value_t *)malloc(size * sizeof(value_t));
            for (int i = 0; i < size; i++) *(p+i) = 0;
        }
        
        ~TreeArray() {
            free(p);
        }
        
        void update(int i, value_t val) {
            for (; i < size; i += (i & -i)) {
                *(p + i) += val;
            }
        }
        
        value_t sum(int i) {
            value_t ret = 0;
            for (; i > 0; i -= (i & -i)) {
                ret += *(p + i);
            }
            return ret;
        }
};

int main(void) {
  TreeArray s(3);
  s.update(1, 1);
  s.update(2, 3);
  s.update(3, 5);
  printf("%lld\n", s.sum(3));
  s.update(2, 2);
  printf("%lld\n", s.sum(3));
}

[1] Leetcode 307. Range Sum Query - Mutable

class NumArray {
public:
    TreeArray s;

    NumArray(vector<int>& nums): s(nums.size()) {
        for (int i = 0; i < nums.size(); i++) {
            s.update(i+1, nums[i]);
        }
    }
    
    void update(int i, int val) {
        long long cur_val = this->sumRange(i, i);
        s.update(i+1, val-cur_val);
    }
    
    int sumRange(int i, int j) {
        return s.sum(j+1) - s.sum(i);
    }
};

相关文章

  • 三种一维树状数组

    单点修改+区间查询 最基本的树状数组 树状数组入门 模板(洛谷P3374 【模板】树状数组1) 区间修改+单点查询...

  • 树状数组模板复习

    树状数组模板复习

  • 树状数组模板

    0X00 理解树状数组 没有学习过的同学可以看这个视频:树状数组 如果想非常顺利的写出这个模板,得记住下面这张图 ...

  • 树状数组模板

    [1] Leetcode 307. Range Sum Query - Mutable

  • 数据结构(二)

    树状数组 POJ 1990: MooFest关于x坐标建立树状数组。先按照v值升序排序,逐个添加到树状数组里。每次...

  • 树状数组求逆序对模板

  • P3374【模板】树状数组

    树状数组其实就是快速计算区间值(log级别)的方法例如: arr[1] = arr[1]arr[2] = arr[...

  • 树状结构转一维数组

    树状结构转数组方法 声明树状对象

  • 树状数组

    复习一下树状数组 树状数组 一种用于处理单点修改和区间查询的数据结构。树状数组C的定义: C[x] = Sum ...

  • 树状数组求逆序对原理

    归并排序和树状数组都可以用nlogn的算法做到求出逆序对.但这里着重讲树状数组的原理与求法.树状数组最常用的方面就...

网友评论

    本文标题:树状数组模板

    本文链接:https://www.haomeiwen.com/subject/thqtoctx.html