| ||||||||||
| 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的不行In Reply To:大家帮忙看一下吧tle的不行了。。实在不知道那里错了。 Posted by:star6 at 2007-04-18 23:05:33 > #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