码迷,mamicode.com
首页 > 其他好文 > 详细

POJ_1195 Mobile phones 【二维树状数组】

时间:2014-06-24 21:15:14      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:acm   c++   poj   数据结构   

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

纯纯的二维树状数组,不解释,只需要注意一点,由于题目中的数组从0开始计算,所以维护的时候需要加1。因为树状数组的下标是不能为1的

代码:

#include <iostream>
#include <cstdio>
#define N 1030
using namespace std;
int c[N][N];
int cas,n,x,y,a,l,b,r,t;
int Lowbit(int x)
{
    return x & (-x);
}
void Updata(int x,int y,int a)
{
    int i,k;
    for(i=x; i<=n; i+=Lowbit(i))
        for(k=y; k<=n; k+=Lowbit(k))
           c[i][k]+=a;
}
int Getsum(int x,int y)
{
    int i,k,sum = 0;
    for(i=x; i>0; i-=Lowbit(i))
        for(k=y; k>0; k-=Lowbit(k))
            sum += c[i][k];
    return sum;
}
int main()
{
    scanf("%d%d",&cas,&n);
    while(~scanf("%d",&cas))
    {
        if(cas==1)
        {
            scanf("%d%d%d",&x,&y,&a);
            Updata(x+1,y+1,a);
        }
        if(cas==2)
        {
            scanf("%d%d%d%d",&l,&b,&r,&t);
            int a=Getsum(r+1,t+1)-Getsum(l,t+1)-Getsum(r+1,b)+Getsum(l,b);
            printf("%d\n",a);
        }
        if(cas==3)
            return 0;
    }
    return 0;
}

POJ_1195 Mobile phones 【二维树状数组】,布布扣,bubuko.com

POJ_1195 Mobile phones 【二维树状数组】

标签:acm   c++   poj   数据结构   

原文地址:http://blog.csdn.net/u013912596/article/details/33802561

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!