POJ-2155 Matrix 二维树状数组, HDU-3584 Cube 三维树状数组

Matrix 是一道需要在二维矩形范围修改和单点查询的题目。Cube 是三维情况下的扩展。
从一维的区间修改单点查询模型可以扩展到二维。用二维树状数组维护差分的矩阵,求和结果就是实际的单点元素值。
一维情况下给 (x, y) 区间加 v 可以执行 add(x, v) 和 add(y+1, -v);
二维下给 (x1, y1) - (x2, y2) 矩形范围加 v ,考虑容斥原理,可以执行

add(x1, y1, v);
add(x1, y2 + 1, -v);
add(x2 + 1, y1, -v);
add(x2 + 1, y2 + 1, v);

三维情况下给 (x1, y1, z1) - (x2, y2, z2) 立方体范围加 v ,又再复杂一些,画一个图多考虑一会可以得到

add(x1, y1, z1, v);
add(x1, y1, z2+1, -v);
add(x1, y2+1, z1, -v);
add(x2+1, y1, z1, -v);
add(x1, y2+1, z2+1, v);
add(x2+1, y1, z2+1, v);
add(x2+1, y2+1, z1, v);
add(x2+1, y2+1, z2+1, -v);

这两题的修改都是在 0 和 1 之间改来改去,可以看作是模2意义下的加减。因此修改操作都可以用加减法来模拟,最终输出结果模2即可。

多组数组的情况下记得每次重置数组,不然会出错。
还有可以只清理输入规模范围的数组,不用每次都把整个数组清空,避免 TLE。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值