您的位置:首页 > 其它

pku1195 Mobile phones

2012-04-15 17:08 232 查看
需要一个这样的数据结构,每次能修改矩阵中的某一个值,还可以查询某个子矩阵的权值和。

二维树状数组没压力啊。

View Code

program pku1195(input,output);
var
c      : array[0..1500,0..1500] of int64;
n,kk : longint;
function lowbit(x: longint ):longint;
begin
exit(x and (-x));
end; { lowbit }
procedure insect(x,y,w :longint );
var
k : longint;
begin
while x<=n do
begin
k:=y;
while k<=n do
begin
inc(c[x,k],w);
k:=k+lowbit(k);
end;
x:=x+lowbit(x);
end;
end; { insect }
function find(x,y :longint ):longint;
var
k : longint;
begin
find:=0;
while x>0 do
begin
k:=y;
while k>0 do
begin
inc(find,c[x,k]);
k:=k-lowbit(k);
end;
x:=x-lowbit(x);
end;
end; { find }
procedure main;
var
x1,y1,x2,y2 : longint;
begin
read(kk);
while kk<>3 do
begin
case kk of
0 : begin
readln(n);
fillchar(c,sizeof(c),0);
end;
1 : begin
readln(x1,y1,x2);
inc(x1);
inc(y1);
insect(x1,y1,x2);
end;
2 : begin
readln(x1,y1,x2,y2);
inc(x1); inc(y1);
inc(x2); inc(y2);
writeln(find(x2,y2)+find(x1-1,y1-1)-find(x2,y1-1)-find(x1-1,y2));
end;
end; { case }
read(kk);
end;
end;
begin
main;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: