zoukankan      html  css  js  c++  java
  • 二维树状数组模板

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <map>
    #include <set>
    #include <bitset>
    #include <queue>
    #include <stack>
    #include <string>
    #include <iostream>
    #include <cmath>
    #include <climits>
    
    using namespace std;
    const int MAX=1200;
    int c[MAX][MAX];
    int n;
    int LowBit(int t)
    {
        return t&(-t);
    }
    int Sum(int endx,int endy)//(1,1) 到 (endx,endy) 矩阵的和
    {
        int sum=0;
        int temp=endy;
        while(endx>0)
        {
            endy=temp;
            while (endy>0)
            {
                sum+=c[endx][endy];
                endy-=LowBit(endy);
            }
    
            endx-=LowBit(endx);
        }
        return sum;
    }
    void add(int addx,int addy,int num)//(x,y) 处增加num
    {
        int temp=addy;
        while (addx <=n)
        {
            addy=temp;
            while(addy<=n)
            {
                c[addx][addy]+=num;
                addy+=LowBit(addy);
            }
            addx+=LowBit(addx);
        }
    }
    int GetSum(int l,int b,int r,int t)//求 (l,b) (r,t) 矩阵的和
    {
        return Sum(r,t)-Sum(r,b-1)-Sum(l-1,t)+Sum(l-1,b-1);
    }
    
    int main()
    {
        int gg;
        int x;
        int a1,a2,a3,a4;
        scanf("%d",&n);
        while(scanf("%d",&x)!=EOF&&x!=3){
            if(x==1){
                scanf("%d%d%d",&a1,&a2,&a3);
                add(a1+1,a2+1,a3);
            }
            else{
                scanf("%d%d%d%d",&a1,&a2,&a3,&a4);
                cout<<GetSum(a1+1,a2+1,a3+1,a4+1)<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    元素显示模式
    cssW3c书写规范
    css字体标签相关
    标签显示模式
    css权重问题
    成员变量和局部变量的区别
    利用反射执行Spring方法,支持参数自动转换
    通用计价的简单代码实现
    关于数据迁移的记录
    【设计模式】----- 观察者模式
  • 原文地址:https://www.cnblogs.com/yigexigua/p/4162652.html
Copyright © 2011-2022 走看看