zoukankan      html  css  js  c++  java
  • SPOJ

    忘记了单点更新时要在树状数组中减去原值。。wa了一发

    /*
    矩形求和,单点更改
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    #define maxn 1030
    int bit[maxn][maxn],n;
    void add(int x,int y,int num){
        for(int i=x;i<=n;i+=i&-i)
            for(int j=y;j<=n;j+=j&-j)
                bit[i][j]+=num;
    }
    int query(int x,int y){
        int res=0;
        for(int i=x;i;i-=i&-i)
            for(int j=y;j;j-=j&-j)
                res+=bit[i][j];
        return res;
    }
    int mp[maxn][maxn];
    int main(){
        int t,x,y,num,x1,x2,y1,y2;
        char op[10];
        scanf("%d",&t);
        while(t--){
            memset(bit,0,sizeof bit);
            memset(mp,0,sizeof mp);
            scanf("%d",&n);
            while(scanf("%s",op)){
                if(op[0]=='E') break;
                if(op[2]=='T'){
                    scanf("%d%d%d",&x,&y,&num);
                    x++;y++;
                    add(x,y,-mp[x][y]);
                    add(x,y,num);
                    mp[x][y]=num;
                }
                else {
                    scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
                    x1++,x2++,y1++,y2++;
                    int ans=0;
                    ans=query(x2,y2)-query(x2,y1-1)-query(x1-1,y2)+query(x1-1,y1-1);
                    printf("%d
    ",ans);
                }
            }
        }
    }
  • 相关阅读:
    Java基本概念
    Java基础语法
    Java环境的搭建
    elicpse
    常见编译器EOP
    上传突破学习笔记
    认识ollydbg
    160个Crackerme破解
    python基础(1)
    文件上传
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10083852.html
Copyright © 2011-2022 走看看