bzoj3132
二维树状数组
树状数组什么的只支持修改单个数值,但是这道题要我们更新一个区域
盗图

就是这样,然后维护四个bit就行了
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
int n, m;
char s[];
struct bit {
int tree[N][N];
int lowbit(int i)
{
return i & -i;
}
void update(int x, int y, ll delta)
{
for(int i = x; i <= n; i += lowbit(i))
for(int j = y; j <= m; j += lowbit(j))
tree[i][j] += delta;
}
int query(int x, int y)
{
ll ret = ;
for(int i = x; i; i -= lowbit(i))
for(int j = y; j; j -= lowbit(j))
ret += tree[i][j];
return ret;
}
} A, B, C, D;
void add(int a, int b, int c, int d, int delta)
{
A.update(c + , d + , delta);
A.update(a, b, delta);
A.update(a, d + , -delta);
A.update(c + , b, -delta);
B.update(c + , d + , (c + ) * delta);
B.update(a, b, a * delta);
B.update(a, d + , -a * delta);
B.update(c + , b, -(c + ) * delta);
C.update(c + , d + , (d + ) * delta);
C.update(a, b, b * delta);
C.update(a, d + , -(d + ) * delta);
C.update(c + , b, -b * delta);
D.update(c + , d + , (c + ) * (d + ) * delta);
D.update(a, b, a * b * delta);
D.update(a, d + , -a * (d + ) * delta);
D.update(c + , b, -(c + ) * b * delta);
}
int getans(int a, int b)
{
return (a + ) * (b + ) * A.query(a, b) - (a + ) * C.query(a, b) - (b + ) * B.query(a, b) + D.query(a, b);
}
int getans(int a, int b, int c, int d)
{
return getans(c, d) - getans(a - , d) - getans(c, b - ) + getans(a - , b - );
}
int main()
{
scanf(" X %d %d", &n, &m);
while(scanf("%s", s) != EOF)
{
int a, b, c, d, delta;
if(s[] == 'L')
{
scanf("%d%d%d%d%d", &a, &b, &c, &d, &delta);
add(a, b, c, d, delta);
}
if(s[] == 'k')
{
scanf("%d%d%d%d", &a, &b, &c, &d);
printf("%d\n", getans(a, b, c, d));
}
}
return ;
}
bzoj3132的更多相关文章
- BZOJ3132: 上帝造题的七分钟
3132: 上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 483 Solved: 222[Submit][Status] Desc ...
- 【树状数组】BZOJ3132 上帝造题的七分钟
3132: 上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1004 Solved: 445[Submit][Status][Dis ...
- 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组
题目大意 维护一个\(n\times m\)的矩阵,有两种操作: \(1~x_1~y_1~x_2~y_2~v\):把\((a,b),(c,d)\)为顶点的矩形区域内的所有数字加上\(v\). \(2~ ...
- 【bzoj3132】 Sdoi2013—森林
http://www.lydsy.com/JudgeOnline/problem.php?id=3123 (题目链接) 题意 给出$n$个点的森林,每个点有一个非负点权,$m$个操作.连接两个点,查询 ...
- 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询
题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...
- BZOJ3132 上帝造题的七分钟 【二维树状数组】
题目 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的 ...
- 【BZOJ3132】上帝造题的七分钟 [树状数组]
上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description “第一分钟,X说,要有矩阵 ...
- [bzoj3132]上帝造题的七分钟——二维树状数组
题目大意 你需要实现一种数据结构,支援以下操作. 给一个矩阵的子矩阵的所有元素同时加一个数. 计算子矩阵和. 题解 一看这个题,我就首先想到用线段树套线段树做. 使用二维线段树的错误解法 其实是第一次 ...
- 线段树【 bzoj3132 】【p4145 】上帝造题的七分钟2 / 花神游历各国
题目大意 给定一个区间 支持开方和查询区间值操作 (多组数据 分析 如果一个区间的最大值小于1,那就没有开方的必要了(具体不会证明,听大佬讲的 一个数经过多次开方就会变成1(可以用计算器试一下 因此我 ...
随机推荐
- Java编辑编译及运行环境
Java编辑编译及运行环境 Microsoft Windows 编辑工具 EditPlus JDK JDK(Java Development Kit,Java开发工具包)安装JDK之后,其中bin文件 ...
- 深入分析同步工具类之CountDownLatch
概览: CountDownLatch又称闭锁,其作用是让一个或者多个线程挂起,直到其他的线程执行完后恢复挂起的线程,使其继续执行.内部维护着一个静态内部类Sync,该类继承AbstractQueued ...
- Random和ArrayList的应用
/*Random类应用与Math类应用,创建一个类, * 1)分别用Random类和Math.random()方法生成随机数. * 2) 把Math.random()方法生成的随机数,转换成1-100 ...
- Apache Maven Cookbook(一)maven 使用命令创建、编译java项目
一.创建 使用命令创建项目分几步: 1.打开命令行窗口,比如cmd,把目录切换至想要创建项目地方. 2.执行如下命令: mvn archetype:generate -DgroupId=com.zua ...
- 完美解决在Servlet中出现一个输出中文乱码的问题
@Override public void doPost(HttpServletRequest reqeust, HttpServletResponse response) throws Servle ...
- App后台开发运维和架构实践学习总结(5)——App产品从需求到研发到开发到上线到产品迭代全过程
前言 如果没有做过开发,研发过产品的人,很难体会做产品的艰难,刚进公司的人,一般充当的是程序开发,我这里说的是开发,它与研发是有区别的. 一个需求下来,如果不能很好地理解产品需求,如果不能很好的驾驭需 ...
- 用Windows自带DOS命令提示符 制作U盘启动盘
Windows & DOS命令提示符 & U盘 & 启动盘 用Windows自带DOS命令提示符 制作U盘启动盘.docx http://xgqfrms.blog.163.co ...
- better-scroll & scroll
scroll better-scroll https://github.com/ustbhuangyi/better-scroll/blob/master/README.md#getting-star ...
- [Codeforces 876]比赛记录
上场$rating$果然炸飞,但是据说这次只要不$FST$就能翻回来QWQ? T1 $dfs$乱搞? T2 取模乱搞,$STL$ $vector$大法好(%%%$ryf$秒出做法) T3 看了半 ...
- [luoguP3690] 【模板】Link Cut Tree
传送门 处理路径 xor 和的时候可以维护子树 xor 和,先提取出路径,再把一个点 splay 到最上方,直接取子树 xor 和即可. 更新一个点权时可以先提取出根到这个点的路径,把这个点 spla ...