Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
大家帮忙看一下吧tle的不行了。。实在不知道那里错了。#include<cstdio> #include<algorithm> const int maxn=1024; int a[maxn][maxn]; int s; int lowbit(int a) { return(a&(-a)); } void update(int x,int y,int t) { int i,j; for (i=x;i<=s;i+=lowbit(i)) for (j=y;j<=s;j+=lowbit(j)) a[i][j]+=t; } int sum(int x1,int y1,int x2,int y2) { int i,j,ti,tj,count; count=0; for (i=x2;(i>x1)&&(i);i-=lowbit(i)) { for (j=y2;(j>y1)&&(j);j-=lowbit(j)) count+=a[i][j]; tj=j; for (j=y1-1;j>tj;j-=lowbit(j)) count-=a[i][j]; } ti=i; for (i=x1-1;i>ti;i-=lowbit(i)) { for (j=y2;j>tj;j-=lowbit(j)) count-=a[i][j]; for (j=y1-1;j>tj;j-=lowbit(j)) count+=a[i][j]; } return(count); } int main() { int key; int x,y,t; int x1,y1,x2,y2; // freopen("c:\\in.txt","r",stdin); do { scanf("%d",&key); switch(key) { case 0: scanf("%d\n",&s); memset(a,0,sizeof(a)); break; case 1: scanf("%d %d %d\n",&x,&y,&t); update(x,y,t); break; case 2: scanf("%d %d %d %d\n",&x1,&y1,&x2,&y2); printf("%d\n",sum(x1,y1,x2,y2)); break; } }while (key!=3); return(0); } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator