zoukankan      html  css  js  c++  java
  • 【poj1195】Mobile phones(二维树状数组)

    题目链接:http://poj.org/problem?id=1195

    【题意】

    给出一个全0的矩阵,然后一些操作
    0 S:初始化矩阵,维数是S*S,值全为0,这个操作只有最开始出现一次
    1 X Y A:对于矩阵的X,Y坐标增加A
    2 L B R T:询问(L,B)到(R,T)区间内值的总和
    3:结束对这个矩阵的操作
     
    【思路】
    二维树状数组单点更新+区域查询,可作为模板题。
    注意坐标是从0开始,所以要+1
     
    【代码】
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cstdlib>
     6 #include<cmath>
     7 using namespace std;
     8 const int N = 1029;
     9 typedef long long LL;
    10 int c[N][N], n;
    11 int lowbit(int x)
    12 {
    13     return x & (-x);
    14 }
    15 void update(int x, int y, int num)
    16 {
    17     for(int i = x; i <= n; i += lowbit(i))
    18         for(int j = y; j <= n; j += lowbit(j))
    19             c[i][j] += num;
    20 }
    21 int query(int x, int y)
    22 {
    23     int sum = 0;
    24     for(int i = x; i > 0; i -= lowbit(i))
    25         for(int j = y; j > 0; j -= lowbit(j))
    26             sum += c[i][j];
    27     return sum;
    28 }
    29 int main()
    30 {
    31     int i, m;
    32     scanf("%d%d", &i, &n);
    33     while(scanf("%d", &m), m != 3)
    34     {
    35         int x1, x2, y1, y2, num;
    36         if(m == 1)
    37         {
    38             scanf("%d%d%d", &x1, &y1, &num);
    39             x1++, y1++;
    40             update(x1, y1, num);
    41         }
    42         else
    43         {
    44             scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    45             x1++, y1++, x2++, y2++;
    46             printf("%d
    ", query(x2, y2) - query(x1 - 1, y2) - query(x2, y1 - 1) + query(x1 - 1, y1 - 1));
    47         }
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    shell加密为二进制可执行文件
    lua自写限制并发访问模块
    centos虚拟机中挂新硬盘
    lua文件修改为二进制文件
    常用一些命令方法
    常用问题处理方法
    CVE-2010-3333
    Kernel Stack Overflow(转)
    NULL Pointer Dereference(转)
    Linux内核漏洞利用-环境配置(转)
  • 原文地址:https://www.cnblogs.com/lesroad/p/8476670.html
Copyright © 2011-2022 走看看