及其类似之前的那俩二维数组的题。
给你改变以及询问。。。啊。。。不解释了。。。不懂的看前俩二维的。。。
WA了好久,刚才看了小说,感觉好好~~~满惭愧的。。。恩。。。
后来发现函数的变量写错了,改了改就A掉了 T T。。。
风好大哦。。。前两节我还是不去咧。。。
#include <queue> #include <stack> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <limits.h> #include <string.h> #include <algorithm> #define MAX 1100 using namespace std; int c[MAX][MAX]; int a[MAX][MAX]; int n; int Lowbit(int x) { return x & (-x); } void Updata(int x,int y,int len) { int i,k; for(i=x; i<=n; i+=Lowbit(i)) for(k=y; k<=n; k+=Lowbit(k)) c[i][k] += len; } int Getsum(int x,int y) { int i,k; int 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() { int jilei,num,x,y,len; int x1,y1,x2,y2; scanf("%d%d",&jilei,&n); memset(a,0,sizeof(a)); memset(c,0,sizeof(c)); n++; while( ~scanf("%d",&num) && num != 3 ) { if( num == 1 ) { scanf("%d%d%d",&x,&y,&len); x++; y++; Updata(x,y,len); } if( num == 2 ) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); x1++; y1++; x2++; y2++; int ans = Getsum(x2,y2) - Getsum(x1-1,y2) - Getsum(x2,y1-1) + Getsum(x1-1,y1-1); printf("%d/n",ans); } } return 0; }