二维树状数组

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

盗图

就是这样,然后维护四个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的更多相关文章

  1. BZOJ3132: 上帝造题的七分钟

    3132: 上帝造题的七分钟 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 483  Solved: 222[Submit][Status] Desc ...

  2. 【树状数组】BZOJ3132 上帝造题的七分钟

    3132: 上帝造题的七分钟 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1004  Solved: 445[Submit][Status][Dis ...

  3. 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组

    题目大意 维护一个\(n\times m\)的矩阵,有两种操作: \(1~x_1~y_1~x_2~y_2~v\):把\((a,b),(c,d)\)为顶点的矩形区域内的所有数字加上\(v\). \(2~ ...

  4. 【bzoj3132】 Sdoi2013—森林

    http://www.lydsy.com/JudgeOnline/problem.php?id=3123 (题目链接) 题意 给出$n$个点的森林,每个点有一个非负点权,$m$个操作.连接两个点,查询 ...

  5. 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询

    题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...

  6. BZOJ3132 上帝造题的七分钟 【二维树状数组】

    题目 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的 ...

  7. 【BZOJ3132】上帝造题的七分钟 [树状数组]

    上帝造题的七分钟 Time Limit: 20 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description “第一分钟,X说,要有矩阵 ...

  8. [bzoj3132]上帝造题的七分钟——二维树状数组

    题目大意 你需要实现一种数据结构,支援以下操作. 给一个矩阵的子矩阵的所有元素同时加一个数. 计算子矩阵和. 题解 一看这个题,我就首先想到用线段树套线段树做. 使用二维线段树的错误解法 其实是第一次 ...

  9. 线段树【 bzoj3132 】【p4145 】上帝造题的七分钟2 / 花神游历各国

    题目大意 给定一个区间 支持开方和查询区间值操作 (多组数据 分析 如果一个区间的最大值小于1,那就没有开方的必要了(具体不会证明,听大佬讲的 一个数经过多次开方就会变成1(可以用计算器试一下 因此我 ...

随机推荐

  1. Java编辑编译及运行环境

    Java编辑编译及运行环境 Microsoft Windows 编辑工具 EditPlus JDK JDK(Java Development Kit,Java开发工具包)安装JDK之后,其中bin文件 ...

  2. 深入分析同步工具类之CountDownLatch

    概览: CountDownLatch又称闭锁,其作用是让一个或者多个线程挂起,直到其他的线程执行完后恢复挂起的线程,使其继续执行.内部维护着一个静态内部类Sync,该类继承AbstractQueued ...

  3. Random和ArrayList的应用

    /*Random类应用与Math类应用,创建一个类, * 1)分别用Random类和Math.random()方法生成随机数. * 2) 把Math.random()方法生成的随机数,转换成1-100 ...

  4. Apache Maven Cookbook(一)maven 使用命令创建、编译java项目

    一.创建 使用命令创建项目分几步: 1.打开命令行窗口,比如cmd,把目录切换至想要创建项目地方. 2.执行如下命令: mvn archetype:generate -DgroupId=com.zua ...

  5. 完美解决在Servlet中出现一个输出中文乱码的问题

    @Override public void doPost(HttpServletRequest reqeust, HttpServletResponse response) throws Servle ...

  6. App后台开发运维和架构实践学习总结(5)——App产品从需求到研发到开发到上线到产品迭代全过程

    前言 如果没有做过开发,研发过产品的人,很难体会做产品的艰难,刚进公司的人,一般充当的是程序开发,我这里说的是开发,它与研发是有区别的. 一个需求下来,如果不能很好地理解产品需求,如果不能很好的驾驭需 ...

  7. 用Windows自带DOS命令提示符 制作U盘启动盘

    Windows & DOS命令提示符 & U盘 & 启动盘 用Windows自带DOS命令提示符 制作U盘启动盘.docx http://xgqfrms.blog.163.co ...

  8. better-scroll & scroll

    scroll better-scroll https://github.com/ustbhuangyi/better-scroll/blob/master/README.md#getting-star ...

  9. [Codeforces 876]比赛记录

    上场$rating$果然炸飞,但是据说这次只要不$FST$就能翻回来QWQ? T1  $dfs$乱搞? T2  取模乱搞,$STL$ $vector$大法好(%%%$ryf$秒出做法) T3  看了半 ...

  10. [luoguP3690] 【模板】Link Cut Tree

    传送门 处理路径 xor 和的时候可以维护子树 xor 和,先提取出路径,再把一个点 splay 到最上方,直接取子树 xor 和即可. 更新一个点权时可以先提取出根到这个点的路径,把这个点 spla ...