zoukankan      html  css  js  c++  java
  • [Vijos1512] SuperBrother打鼹鼠 (二维树状数组)

    传送门

    直接搞就行。

    注意下表re从零开始,而树状数组搞不了0,所以统一增加一个偏移量1.

    (话说数据随机是什么鬼?)

     1 # include <iostream>
     2 # include <cstdio>
     3 # include <cstring>
     4 # include <string>
     5 # include <cmath>
     6 # include <vector>
     7 # include <map>
     8 # include <queue>
     9 # include <cstdlib>
    10 # define MAXN 1100
    11 using namespace std;
    12 
    13 inline int get_num() {
    14     int k = 0, f = 1;
    15     char c = getchar();
    16     for(; !isdigit(c); c = getchar()) if(c == '-') f = -1;
    17     for(; isdigit(c); c = getchar()) k = k * 10 + c - '0';
    18     return k * f;
    19 }
    20 
    21 int n;
    22 int c[MAXN][MAXN];
    23 inline int lowbit(int x)
    24 {
    25     return x & -x;
    26 }
    27 
    28 inline void add(int x, int y, int k)
    29 {
    30     int i, j;
    31     for(i = x; i <= n; i += lowbit(i))
    32         for(j = y; j <= n; j += lowbit(j))
    33             c[i][j] += k;
    34 }
    35 
    36 inline int query(int x, int y)
    37 {
    38     int i, j, ans = 0;
    39     for(i = x; i; i -= lowbit(i))
    40         for(j = y; j; j -= lowbit(j))
    41             ans += c[i][j];
    42     return ans;
    43 }
    44 
    45 int main()
    46 {
    47     int i, x, y, k, x1, x2, y1, y2, m;
    48     n = get_num() + 1;
    49     while(1)
    50     {
    51         m = get_num();
    52         if(m == 3) break;
    53         if(m == 1)
    54         {
    55             x = get_num() + 1;
    56             y = get_num() + 1;
    57             k = get_num();
    58             add(x, y, k);
    59         }
    60         else
    61         {
    62             x1 = get_num() + 1;
    63             y1 = get_num() + 1;
    64             x2 = get_num() + 1;
    65             y2 = get_num() + 1;
    66             printf("%d
    ", query(x2, y2) - query(x1 - 1, y2) - query(x2, y1 - 1) + query(x1 - 1, y1 - 1));
    67         }
    68     }
    69     return 0;
    70 }
    View Code
  • 相关阅读:
    头像切换封装
    JSON数据的序列化方法
    HTML5 LocalStorage 本地存储
    onhashchange实现下一页与上一页功能,并且实现当前页面刷新时停留在当前页面
    提交页面可输入的数据-----XSS漏洞
    js冒泡排序
    html实现将网页页面分享到微信朋友圈添加缩略图图片的方法
    js常用正则表达式
    C 传递指针给函数
    C 指向指针的指针
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/6797543.html
Copyright © 2011-2022 走看看