• 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



  • 相关阅读:
    云计算
    uc/xi
    互联网 2.0概念
    java连接数据库
    记录一下安装 mysql 的踩坑之路
    1
    Linux介绍与基本必知命令
    Web课程Linux命令统计
    7——条件判断、三目运算、条件循环、迭代循环
    6——散列类型、运算符优先级、逻辑运算
  • 原文地址:https://www.cnblogs.com/myoi/p/2368389.html
Copyright © 2020-2023  润新知