• poj1195二维树状数组模板


    二维树状数组和一维的也差不多,改一下add和query函数即可:即按行修改,行内单点修改即可

    /*
    二维树状数组,询问一个二维区间内的数之和
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    #define maxn 1050
    int s;
    int bit[maxn][maxn];
    void add(int x,int y,int a){
        for(int i=x;i<=s;i+=i&-i)
            for(int j=y;j<=s;j+=j&-j)
                bit[i][j]+=a;
    }
    int query(int x,int y){
        int ans=0;
        for(int i=x;i;i-=i&-i)
            for(int j=y;j;j-=j&-j)
                ans+=bit[i][j];
        return ans;
    }
    int main(){
        int t,q,x,y,sum,l,r,a;
        scanf("%d%d",&t,&s);
        memset(bit,0,sizeof bit);
        while(scanf("%d",&q),q<3){
            if(q==1){//区间加上一个数
                scanf("%d%d%d",&x,&y,&a);
                x++;y++;
                add(x,y,a);
            }
            else if(q==2){
                scanf("%d%d%d%d",&x,&y,&l,&r);
                x++;y++;l++;r++;
                printf("%d
    ",query(l,r)-query(l,y-1)-query(x-1,r)+query(x-1,y-1));
            }
        }
        return 0;
    }
  • 相关阅读:
    idea
    C#
    mysql
    .net5
    .net5
    .net5
    .net5
    .net5
    .net5
    .net5
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10078904.html
Copyright © 2020-2023  润新知