bzoj 1452 二维树状数组
2017-04-15 22:11
295 查看
题意:n*m的矩阵,两种操作:
(1)修改一个格子的权值
(2)求一个子矩阵中指定权值出现的次数
对每种颜色维护一个二维树状数组
var
a :array[0..105,0..305,0..305] of longint;
map :array[0..305,0..305] of longint;
i,j :longint;
ans,n,m,q :longint;
k,x1,y1,c,x2,y2 :longint;
function lowbit(x:longint):longint;
begin
exit(x and (-x));
end;
procedure add(x,y,c,z:longint);
var
t:longint;
begin
while (x<=n) do
begin
t:=y;
while (t<=m) do
begin
inc(a[c,x,t],z);
inc(t,lowbit(t));;
end;
inc(x,lowbit(x));
end;
end;
function sum(x,y,c:longint):longint;
var
t,ans:longint;
begin
ans:=0;
while (x>0) do
begin
t:=y;
while (t>0) do
begin
inc(ans,a[c,x,t]);
dec(t,lowbit(t));
end;
dec(x,lowbit(x));
end;
exit(ans);
end;
begin
read(n,m);
for i:=1 to n do
for j:=1 to m do
begin
read(map[i,j]);
add(i,j,map[i,j],1);
end;
//
read(q);
for i:=1 to q do
begin
read(k);
if (k=1) then
begin
read(x1,y1,c);
add(x1,y1,map[x1,y1],-1);
add(x1,y1,c,1);
map[x1,y1]:=c;
end else
begin
read(x1,x2,y1,y2,c);
ans:=sum(x2,y2,c)-sum(x1-1,y2,c)-sum(x2,y1-1,c)+sum(x1-1,y1-1,c);
writeln(ans);
end;
end;
end.
——by Eirlys
(1)修改一个格子的权值
(2)求一个子矩阵中指定权值出现的次数
对每种颜色维护一个二维树状数组
var
a :array[0..105,0..305,0..305] of longint;
map :array[0..305,0..305] of longint;
i,j :longint;
ans,n,m,q :longint;
k,x1,y1,c,x2,y2 :longint;
function lowbit(x:longint):longint;
begin
exit(x and (-x));
end;
procedure add(x,y,c,z:longint);
var
t:longint;
begin
while (x<=n) do
begin
t:=y;
while (t<=m) do
begin
inc(a[c,x,t],z);
inc(t,lowbit(t));;
end;
inc(x,lowbit(x));
end;
end;
function sum(x,y,c:longint):longint;
var
t,ans:longint;
begin
ans:=0;
while (x>0) do
begin
t:=y;
while (t>0) do
begin
inc(ans,a[c,x,t]);
dec(t,lowbit(t));
end;
dec(x,lowbit(x));
end;
exit(ans);
end;
begin
read(n,m);
for i:=1 to n do
for j:=1 to m do
begin
read(map[i,j]);
add(i,j,map[i,j],1);
end;
//
read(q);
for i:=1 to q do
begin
read(k);
if (k=1) then
begin
read(x1,y1,c);
add(x1,y1,map[x1,y1],-1);
add(x1,y1,c,1);
map[x1,y1]:=c;
end else
begin
read(x1,x2,y1,y2,c);
ans:=sum(x2,y2,c)-sum(x1-1,y2,c)-sum(x2,y1-1,c)+sum(x1-1,y1-1,c);
writeln(ans);
end;
end;
end.
——by Eirlys
相关文章推荐
- BZOJ 1452: [JSOI2009]Count [二维树状数组]
- bzoj1452 二维树状数组
- 【二维树状数组】BZOJ1452 [JSOI2009]Count
- 【二维树状数组】bzoj1452 [JSOI2009]Count
- BZOJ 1452: [JSOI2009]Count 二维树状数组
- BZOJ 1452: [JSOI2009]Count 二维树状数组
- [BZOJ1452] Count 二维树状数组
- [二维树状数组]BZOJ 1452—— [JSOI2009]Count
- BZOJ 1452: [JSOI2009]Count 二维树状数组
- [BZOJ]3594 [SCOI2014] 方伯伯的玉米田 二维树状数组 + dp
- bzoj 3132 二维树状数组
- bzoj 3132 上帝造题的七分钟(二维树状数组区间修改区间查询模板)
- [BZOJ3594] [Scoi2014]方伯伯的玉米田 二维树状数组优化dp
- |BZOJ 1452|树状数组|[JSOI2009]Count
- [bzoj 1452] Count (树状数组)
- 【整体二分+二维树状数组】BZOJ2738 矩阵乘法
- 【BZOJ-1452】Count 树状数组 套 树状数组
- [BZOJ3594]二维树状数组优化DP
- BZOJ 4785 [Zjoi2017]树状数组 | 二维线段树
- 【二维树状数组优化dp】[Scoi2014] bzoj3594方伯伯的玉米田