裸樹狀數組,關鍵在於二維的求和操作不要寫錯。
getsum(u+1,v+1)+getsum(x,y)-getsum(u+1,y)-getsum(x,v+1);
#include #include #include #include #include #include #include using namespace std; #define N 1050 int n,m; int tt[N][N]; int lowbit(int x){return -x&x;} void update(int r,int l,int num) { int i,j; for(i=r;i<=n;i+=lowbit(i)) for(j=l;j<=n;j+=lowbit(j)) tt[i][j]+=num; } int getsum(int r,int l) { int i,j; int ans=0; for(i=r;i>0;i-=lowbit(i)) for(j=l;j>0;j-=lowbit(j)) ans+=tt[i][j]; return ans; } int main() { int i,j,k,u,v,x,y; //freopen("in.txt","r",stdin); while(1) { scanf("%d",&k); if(k==0){scanf("%d",&n);n++;memset(tt,0,sizeof(tt));continue;} else if(k==1){scanf("%d%d%d",&x,&y,&u);update(x+1,y+1,u);continue;} else if(k==2) { scanf("%d%d%d%d",&x,&y,&u,&v); k=getsum(u+1,v+1)+getsum(x,y)-getsum(u+1,y)-getsum(x,v+1); printf("%d\n",k); } else break; } return 0; }
在70年代,計算機已經發展了一段時間,芯片的規模也越
Codeforces Round #310 (Div. 1)
Qt 環境下的activex控件編程-------1,act
#include<iostream> #i
智能指針 auto_ptr、scoped_ptr、share
poj 1416 Shredding Company dfs