/**
**author :Or_me **
╭︿︿︿╮
{/ a c /}
( (oo) )
︶︶︶
** **
** 题**
** 2014 年 月 日**
**/
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <cstdio>
#include <string>
#include <cctype>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#include <stdio.h>
#define M 10000
inline int lowbit(int x)
{
return x&-x;
}
int R[1030][1030];
void add(int n,int x,int y,int d)
{
for(int i=x;i<=n;i+=lowbit(i))
for(int j=y;j<=n;j+=lowbit(j))
R[i][j]+=d;
}
int s(int x,int y)
{
int ans=0;
for(int i=x;i>0;i-=lowbit(i))
for(int j=y;j>0;j-=lowbit(j))
ans+=R[i][j];
return ans;
}
int main()
{
int x,y,a,n,k,L,B,R,T;
scanf("%d%d",&n,&k);
while(scanf("%d",&n)&&n!=3)
{
if(n==1)
{
scanf("%d%d%d",&x,&y,&a);
x+=1;y+=1;
add(k,x,y,a);
}
if(n==2)
{
scanf("%d%d%d%d",&L,&B,&R,&T);
L+=1;B+=1;R+=1;T+=1;
int ans=s(R,T)-s(R,B-1)-s(L-1,T)+s(L-1,B-1);
printf("%d\n",ans);
}
}
return 0;
}
二维树状数组~
最新推荐文章于 2021-07-22 11:30:50 发布