| ||||||||||
| 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 | |||||||||
贴一个p的树状数组var
tree:array[0..1025,0..1025] of int64;
n,size:longint;
procedure plus(x,y,n:longint);
var
t:longint;
begin
while x<=size do
begin
t:=y;
while t<=size do
begin
inc(tree[x,t],n);
t:=t+t and -t;
end;
x:=x+x and -x;
end;
end;
function sum(x,y:longint):int64;
var
t:longint;
begin
sum:=0;
while x>0 do
begin
t:=y;
while t>0 do
begin
inc(sum,tree[x,t]);
t:=t-t and -t;
end;
x:=x-x and -x;
end;
end;
procedure add;
var
x,y,z:longint;
begin
read(x,y,z);
inc(x); inc(y);
plus(x,y,z);
end;
procedure getans;
var
x1,y1,x2,y2:longint;
k:int64;
begin
read(x1,y1,x2,y2);
inc(x1); inc(x2); inc(y1); inc(y2);
k:=sum(x2,y2)-sum(x2,y1-1)-sum(x1-1,y2)+sum(x1-1,y1-1);
writeln(k);
end;
begin
read(n);
while n<>3 do
begin
case n of
0:begin read(size); fillchar(tree,sizeof(tree),0); end;
1:add;
2:getans;
end;
read(n);
end;
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator