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

树状数组_二维

时间:2018-07-22 11:22:34      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:lowbit   ems   class   pre   public   style   inline   bsp   oid   

class TreeArraryTwo{
public :
    const static int cmaxn = 1e3+200;
    int date[cmaxn][cmaxn];
    int xsz, ysz;
    
    void init(int size_x, int size_y) {
        xsz = size_x; 
        ysz = size_y;
        memset(date, 0, sizeof(date));
    } 
    
    inline int lowbit(int idx) { return idx & -idx; }
    
    void update(int x, int y, int val) {
        int i, j;
        for (i=x; i<=xsz; i+=lowbit(i))  // 注意 y x是相反的 ---> emmmm.  
            for (j=y; j<=ysz; j+=lowbit(j)) 
                date[i][j] += val;
    }
    
    int getsum(int x, int y) {
        int i, j, res = 0;
        for (i=x; i>0; i-=lowbit(i)) 
            for (j=y; j>0; j-=lowbit(j)) 
                res += date[i][j];
        return res;
    }
    
    /// 书写代码的时候要注意 原点!!!! 不是直接左上角 而是从原点的位置开始弄. 
    /// 下面的代码是原点在左下角的  和我们数学上的笛卡尔坐标系一致. 
    int getsum(int x1, int y1, int x2, int y2) { 
    //    return getsum(x2, y1) - getsum(x1-1, y1) - getsum(x2, y2-1) + getsum(x1-1, y2-1);  // 给定左上角 右下角 
        return getsum(x2, y2) - getsum(x1-1, y2) - getsum(x2, y1-1) + getsum(x1-1, y1-1);  //左下角 右上角 
    }
    
};

 

class TreeArraryTwo{public :const static int cmaxn = 1e3+200;int date[cmaxn][cmaxn];int xsz, ysz;void init(int size_x, int size_y) {xsz = size_x; ysz = size_y;memset(date, 0, sizeof(date));} inline int lowbit(int idx) { return idx & -idx; }void update(int x, int y, int val) {int i, j;for (i=x; i<=xsz; i+=lowbit(i))  // 注意 y x是相反的 ---> emmmm.  for (j=y; j<=ysz; j+=lowbit(j)) date[i][j] += val;}int getsum(int x, int y) {int i, j, res = 0;for (i=x; i>0; i-=lowbit(i)) for (j=y; j>0; j-=lowbit(j)) res += date[i][j];return res;}/// 书写代码的时候要注意 原点!!!! 不是直接左上角 而是从原点的位置开始弄. /// 下面的代码是原点在左下角的  和我们数学上的笛卡尔坐标系一致. int getsum(int x1, int y1, int x2, int y2) { //return getsum(x2, y1) - getsum(x1-1, y1) - getsum(x2, y2-1) + getsum(x1-1, y2-1);  // 给定左上角 右下角 return getsum(x2, y2) - getsum(x1-1, y2) - getsum(x2, y1-1) + getsum(x1-1, y1-1);  //左下角 右上角 }};

树状数组_二维

标签:lowbit   ems   class   pre   public   style   inline   bsp   oid   

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

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