zoukankan      html  css  js  c++  java
  • poj 1195 Mobile phones 二维树状数组

    题意:n*n的矩阵 

    定义两种操作:

    1 x y a 把(x,y)的权值加a

    2 l b r t 查询 子矩阵(l,b) ~(r,t)  的和

    思路:二维树状数组

     1 #include<iostream>
    2 using namespace std;
    3 #define MAXN 1200
    4 int tree[MAXN][MAXN];
    5 int n;
    6 int lowbit(int x)
    7 {
    8 return x&(x^(x-1));
    9 }
    10 void update(int x,int y,int a)
    11 {
    12 for(int i=x;i<=n;i+=lowbit(i))
    13 for(int j=y;j<=n;j+=lowbit(j))
    14 tree[i][j]+=a;
    15 }
    16 int sum(int x,int y)
    17 {
    18 int ans=0;
    19 for(int i=x;i>0;i-=lowbit(i))
    20 for(int j=y;j>0;j-=lowbit(j))
    21 ans+=tree[i][j];
    22 return ans;
    23 }
    24 int main()
    25 {
    26 int x,y,a,l,b,r,t,z;
    27 int i,j;
    28 while(scanf("%d",&z)&&z!=3)
    29 {
    30 if(z==0)
    31 {
    32 scanf("%d",&n);
    33 memset(tree,0,sizeof(tree));
    34 continue;
    35 }
    36 if(z==2)
    37 {
    38 scanf("%d%d%d%d",&l,&b,&r,&t);
    39 l++; b++; r++; t++;
    40 printf("%d\n",sum(r,t)-sum(l-1,t)-sum(r,b-1)+sum(l-1,b-1));
    41 }
    42 else
    43 {
    44 scanf("%d%d%d",&x,&y,&a);
    45 update(x+1,y+1,a);
    46 }
    47 }
    48 return 0;
    49 }
    50
    51



  • 相关阅读:
    欧拉函数
    新博客地址
    socket编程
    文件操作
    python安装扩展”unable to find vcvarsall.bat“的解决办法
    PYTHON以及插件安装
    梯式结构
    PHPSTORM配置
    CSRF攻击
    js的一些奇葩用法
  • 原文地址:https://www.cnblogs.com/myoi/p/2368389.html
Copyright © 2011-2022 走看看