zoukankan      html  css  js  c++  java
  • Mobile phones(电话簿)

    poj 1195

    题目大意:给出0时初始化,给出1时将矩阵中坐标为x,y的增加A,给出2时 查询区域为l<=x<=r, b<=r<=t范围内的总和

    解决:二维树状数组,只要知道一维中如何插点问段,这个便顺利写出

    #include <iostream>
    #include <cstdio>
    using namespace std;
    const int N=1200;
    
    int c[N][N];
    int n;
    void init()
    {
        memset(c,0,sizeof(c));
    }
    int lowbit(int x)
    {
        return x&(-x);
    }
    void updata(int x,int y,int inc)
    {
        for(int i=x;i<=n;i+=lowbit(i))
          for(int j=y;j<=n;j+=lowbit(j))
           c[i][j]+=inc;
    }
    int query(int x,int y)
    {
        int sum=0;
        for(int i=x;i>0;i-=lowbit(i))
          for(int j=y;j>0;j-=lowbit(j))
             sum+=c[i][j];
        return sum;
    }
    int main()
    {
        int cmd,a,b,c,d;
        while(scanf("%d",&cmd),cmd!=3)
        {
            if(cmd==0){scanf("%d",&n);init();}
            else if(cmd==1){scanf("%d%d%d",&a,&b,&c);updata(a+1,b+1,c);}
            else if(cmd==2){scanf("%d%d%d%d",&a,&b,&c,&d);printf("%d\n",query(c+1,d+1)-query(c+1,b)-query(a,d+1)+query(a,b));}
        }
        system("pause");
        return 0;
    }
    

  • 相关阅读:
    类继承
    抽象基类 纯虚函数
    虚函数
    Java网络通信
    Java补补补
    刷LeetCode吧
    贝叶斯网络的
    vscode添加vue模板
    vue--项目实例
    Java01
  • 原文地址:https://www.cnblogs.com/hpustudent/p/2149312.html
Copyright © 2011-2022 走看看