Mobile phones(二维树状数组) POJ - 1195

Posted whhh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mobile phones(二维树状数组) POJ - 1195相关的知识,希望对你有一定的参考价值。

有一个正方形游戏背包,大小为S*S(1<=S<=1024)。含有很多小格子,小格子编号从0开始,直到S-1。每一个格子里有一定数量的物品,同时每一个格子的物品里的数目也是不断变化的,现在要一边进行修改某些单位格子内的物品的数目,同时也要询问某些区域的手机数目。 数据保证每个格子内物品数目一直在int范围内,查询的格子内的物品数目也在int范围内


#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
#include<stdio.h>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include <sstream>
#include<vector>
#include<cmath>    
#include<stack>
#include<time.h>
#include<ctime>
using namespace std;
#define inf 1<<30
#define eps 1e-7
#define LD long double
#define LL long long
#define maxn 100000005
int a[2005][2005] = {};
int c[2005][2005] = {};
int n;
int lowbit(int m)
{
    return m & (-m);
}
void add(int x, int y, int val)
{
    a[x][y] += val;
    for (int i = x; i <= n; i += lowbit(i))
    {
        for (int j = y; j <= n; j += lowbit(j))
        {
            c[i][j] += val;
        }
    }
}
LL query(int x, int y)
{
    LL ans = 0;
    for (int i = x; i>0; i -= lowbit(i))
    {
        for (int j = y; j>0; j -= lowbit(j))
        {
            ans += c[i][j];
        }
    }
    return ans;
}
int main()
{
    int T;
    while (~scanf("%d", &T)&&T!=3)
    {
        if (T == 0)
        {
            scanf("%d", &n);
        }
        else if (T == 1)
        {
            int q, w, e;
            scanf("%d%d%d", &q, &w, &e);
            q++; w++;
            add(q, w, e);
        }
        else if (T == 2)
        {
            int x1, y1, x2, y2;
            scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
            x1++; x2++; y1++; y2++;
            LL sum = 0;
            sum = query(x2, y2) - query(x1 - 1, y2) - query(x2, y1 - 1) + query(x1 - 1, y1 - 1);
            printf("%lld
", sum);
        }
    }
}

 

 

 


 

以上是关于Mobile phones(二维树状数组) POJ - 1195的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1195 Mobile phones (二维树状数组)

POJ1195 Mobile phones 二维树状数组

poj1195 Mobile phones(二维树状数组)

POJ_1195 Mobile phones 二维树状数组

POJ 1195 Mobile phones(二维树状数组)

POJ-1195 Mobile phones---裸的二维树状数组(注意下标从1,1开始)