您的位置:首页 > 其它

bzoj1452 二维树状数组

2015-06-16 21:54 309 查看
program hehe;
var
n,m,i,j,q,x1,y1,x2,y2,co:longint;
y:array[0..300,0..300] of longint;
x:array[0..100,0..300,0..300] of longint;

procedure add(k,a,b,t:longint);
var
c:longint;
begin
while a<=n do
begin
c:=b;
while c<=m do
begin
x[k,a,c]:=x[k,a,c]+t;
c:=c+(c and(-c));
end;
a:=a+(a and(-a));
end;
end;

function find(k,a,b:longint):longint;
var
s,c:longint;
begin
s:=0;
while a>0 do
begin
c:=b;
while c>0 do
begin
s:=s+x[k,a,c];
c:=c-(c and(-c));
end;
a:=a-(a and(-a));
end;
exit(s);
end;

begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
begin
read(y[i,j]);
add(y[i,j],i,j,1);
end;
readln(q);
for i:=1 to q do
begin
read(j);
if j=1 then
begin
readln(x1,y1,co);
add(y[x1,y1],x1,y1,-1);
y[x1,y1]:=co;
add(co,x1,y1,1);
end
else
begin
readln(x1,x2,y1,y2,co);
writeln(find(co,x2,y2)-find(co,x1-1,y2)-find(co,x2,y1-1)+find(co,x1-1,y1-1));
end;
end;
end.


View Code

1452: [JSOI2009]Count

Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 1414 Solved: 831
[Submit][Status][Discuss]

Description



Input



Output



Sample Input



Sample Output

1

2

HINT



Source

JSOI2009Day1

[Submit][Status][Discuss]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: