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 |
用树状数组写的为什么Time Limit Exceededprogram poj1656; var a:array[1..100,1..100] of integer; c:array[1..100,1..100] of integer; i,j,t,x,y,l,code:integer; s,chx,chy,chl:string; ch:char; function lowbit(i:integer):longint; begin lowbit:=(-i) and i; end; procedure change(i,j,color:integer); var x,y,delta:integer; begin if a[i,j]=color then exit; a[i,j]:=color; if color=0 then delta:=-1 else delta:=color; x:=i;y:=j; while x<=100 do begin y:=j; while y<=100 do begin c[x,y]:=c[x,y]+delta; y:=y+lowbit(y); end; x:=x+lowbit(x); end; end; function getsum(i,j :integer):longint; var x,y:integer; sum:longint; begin sum:=0; x:=i; y:=j; while x>0 do begin y:=j; while y>0 do begin sum:=sum+c[x,y]; y:=y-lowbit(y); end; x:=x-lowbit(x); end; getsum:=sum; end; begin fillchar(c,sizeof(c),0); fillchar(a,sizeof(a),0); readln(t); while t>0 do begin dec(t); readln(s); ch:=s[1]; i:=pos(' ',s); delete(s,1,i); i:=pos(' ',s); chx:=copy(s,1,i-1); delete(s,1,i); chy:=copy(s,1,i-1); delete(s,1,i); chl:=copy(s,1,length(s)); val(chx,x,code); val(chy,y,code); val(chl,l,code); case ch of 'B':begin for i:=x to x+l-1 do for j:=y to y+l-1 do change(i,j,1); end; 'W':begin for i:=x to x+l-1 do for j:=y to y+l-1 do change(i,j,0); end; 'T':begin writeln(getsum(x+l-1,y+l-1)-getsum(x+l-1,y-1)-getsum(x-1,y+l-1)+getsum(x-1,y-1)); end; end; end; end. Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator