Bzoj3132 二维树状数组
来源:互联网 发布:4g网络优化初级工程师 编辑:程序博客网 时间:2024/06/05 01:58
这个东西真的好神。。。
第一次发现原来树状数组也可以这么神。。。
首先可以考虑一下一维情况的树状数组的段修改和段查询
做法是两颗树状数组分别维护询问范围小于当前修改范围的贡献值
和询问范围大于当前修改范围的贡献值
但是二维呢。。。
就需要四个树状数组了
具体做法感觉wyl8899讲的很好我没必要重复了。。
http://hi.bai 网址 du.com/wyl8899/item 网址 /c3ac1c0eec3516ea34990267
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#define MAX 2222#define rep(i, j, k) for (int i = j; i <= k; i++)#define lowbit(x) (x & -x )using namespace std;int n, m, x1, y1, x2, y2, delta;struct wbysr{int s[MAX][MAX];inline void add (int x, int y, int value){for (; x <= n; x += lowbit (x))for(int j = y; j <= m; j += lowbit(j))s[x][j] += value;}inline int sum (int x, int y){int ret = 0;for (; x; x -= lowbit (x))for (int j = y; j; j -= lowbit (j))ret += s[x][j];return ret;}}b1, b2, b3, b4;inline void update (int x, int y, int value) {if (!x || !y)return;b1.add (x, y, x * y * value);b2.add (x, 1, x * value), b2.add (x, y, -x * value);b3.add (1, y, y * value), b3.add (x, y, -y * value);b4.add (1, 1, value), b4.add (x, y, value);b4.add (x, 1, -value), b4.add (1, y, -value);}inline int ask (int x, int y){if (!x || !y)return 0;return b1.sum (x, y) + b2.sum (x, y) * y + b3.sum (x, y) * x + b4.sum (x, y) * x * y;}int main(){char control;scanf ("%c%d%d", &control, &n, &m);while (getchar(), scanf("%c%d%d%d%d", &control, &x1, &y1, &x2, &y2)){if (control == 'L'){scanf ("%d", &delta);update (x2, y2, delta);update (x1 - 1, y1 - 1, delta);update (x2, y1 - 1, -delta);update (x1 - 1, y2, -delta);}elseprintf ("%d\n", ask (x2, y2) + ask (x1 - 1, y1 - 1) - ask (x2, y1 - 1) - ask (x1 - 1, y2));}return 0;}
0 0
- Bzoj3132 二维树状数组
- bzoj3132 二维树状数组
- bzoj3132(二维树状数组+公式化简处理)
- bzoj3132上帝造题的七分钟 二维树状数组
- BZOJ3132 上帝造题的七分钟 【二维树状数组】
- 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组
- pku1195 二维树状数组
- 二维树状数组
- 二维树状数组
- 树状数组 二维空间
- 二维树状数组
- 二维树状数组
- 二维树状数组
- POJ2155(二维树状数组)
- poj1195 二维树状数组
- 二维树状数组
- poj1195(二维树状数组)
- hdu1892二维树状数组
- Ubuntu之FireFox不能使用修复
- 国内第一本云计算原创图书《走进云计算》
- shell 常用正则表达式
- hdu1060
- File,把指定的目录下的所有文件和文件夹删除的方法
- Bzoj3132 二维树状数组
- 自动备份MySQL数据库并删除五天前旧档和上传到其它服务器
- Exported service does not require permission警告
- 杂七杂八
- java 位数补0处理
- Phonegap条形码扫描插件说明文档
- android - 使用缩略图
- 安卓——不同活动之间数据传送
- word2vec中k-means学习笔记