标签:树状数组
一次AC
二维树状数组,有模版很好办
注意二维树状数组这个下标是[1][1]的
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int Max = 1030;
int row, col, ar[Max][Max];
// 二维的其实下标为[1][1],这个要记得。
int lowbit(int x)
{
return x & (-x);
}
void add(int i, int j, int w)
{
int tmpj;
while(i <= row)
{
tmpj = j;
while(tmpj <= col)
{
ar[i][tmpj] += w;
tmpj += lowbit(tmpj);
}
i += lowbit(i);
}
}
int sum(int i, int j)
{
int tmpj, ans = 0;
while(i > 0)
{
tmpj = j;
while(tmpj > 0)
{
ans += ar[i][tmpj];
tmpj -= lowbit(tmpj);
}
i -= lowbit(i);
}
return ans;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("G:/1.txt","r",stdin);
freopen("G:/2.txt","w",stdout);
#endif
int tmp,n;
scanf("%d%d",&tmp,&n);
row=col=n;
while(true)
{
int kind,x,y,xx,yy,v;
scanf("%d",&kind);
if(kind==1)
{
scanf("%d%d%d",&x,&y,&v);
add(x+1,y+1,v);
}
else if(kind==2)
{
scanf("%d%d%d%d",&x,&y,&xx,&yy);
x++;y++;xx++;yy++;
printf("%d\n",sum(xx,yy)-sum(xx,y-1)-sum(x-1,yy)+sum(x-1,y-1));
}
else
{
break;
}
}
return 0;
}
poj1195 mobile phones 【二维树状数组】,布布扣,bubuko.com
poj1195 mobile phones 【二维树状数组】
标签:树状数组
原文地址:http://blog.csdn.net/u011775691/article/details/26357107