题目大意

  维护一个\(n\times m\)的矩阵,有两种操作:

   \(1~x_1~y_1~x_2~y_2~v\):把\((a,b),(c,d)\)为顶点的矩形区域内的所有数字加上\(v\)。

   \(2~x_1~y_1~x_2~y_2\):求\((a,b),(c,d)\)为顶点的矩形区域内所有数字的和。

  \(n,m\leq 2048\),操作数\(q\leq 200000\),保证运算过程中及最终结果均不超过32位带符号整数类型的表示范围

题解

  二维树状数组区间修改+区间求和模板题

  区间修改+区间求和

  时间复杂度:\(O(q\log n\log m)\)

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#include<utility>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int c1[2100][2100];
int c2[2100][2100];
int c3[2100][2100];
int c4[2100][2100];
int n,m;
void add(int c[2100][2100],int x,int y,int v)
{int i,j;for(i=x;i<=n;i+=i&-i)for(j=y;j<=m;j+=j&-j)c[i][j]+=v;
}
int sum(int c[2100][2100],int x,int y)
{int i,j;int s=0;for(i=x;i;i-=i&-i)for(j=y;j;j-=j&-j)s+=c[i][j];return s;
}
void add(int x1,int y1,int x2,int y2,int v)
{add(c1,x1,y1,v); add(c1,x1,y2+1,-v); add(c1,x2+1,y1,-v); add(c1,x2+1,y2+1,v);add(c2,x1,y1,v*y1); add(c2,x1,y2+1,-v*(y2+1)); add(c2,x2+1,y1,-v*y1); add(c2,x2+1,y2+1,v*(y2+1));add(c3,x1,y1,v*x1); add(c3,x1,y2+1,-v*x1); add(c3,x2+1,y1,-v*(x2+1)); add(c3,x2+1,y2+1,v*(x2+1));add(c4,x1,y1,v*x1*y1); add(c4,x1,y2+1,-v*x1*(y2+1)); add(c4,x2+1,y1,-v*(x2+1)*y1); add(c4,x2+1,y2+1,v*(x2+1)*(y2+1));
}
int sum(int x,int y)
{return (x+1)*(y+1)*sum(c1,x,y)-(x+1)*sum(c2,x,y)-(y+1)*sum(c3,x,y)+sum(c4,x,y);
}
int sum(int x1,int y1,int x2,int y2)
{return sum(x2,y2)-sum(x2,y1-1)-sum(x1-1,y2)+sum(x1-1,y1-1);
}
int main()
{memset(c1,0,sizeof c1);memset(c2,0,sizeof c2);memset(c3,0,sizeof c3);memset(c4,0,sizeof c4);char s[5];scanf("%s%d%d",s,&n,&m);while(~scanf("%s",s)){if(s[0]=='L'){int x1,y1,x2,y2,v;scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&v);add(x1,y1,x2,y2,v);}else{int x1,y1,x2,y2;int ans;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);ans=sum(x1,y1,x2,y2);printf("%d\n",ans);}}return 0;
}

转载于:https://www.cnblogs.com/ywwyww/p/8511340.html

【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组相关推荐

  1. 二维树状数组(水题) POJ1195

    前段时间遇到线段树过不了,树状数组却过了的题.(其实线段树过得了的) 回忆了下树状数组. 主要原理,还是二进制位数,每一项的和表示其为它的前((最后一位1及其后)的二进制数)和,可从二进制图来看.(用 ...

  2. 二维树状数组模板(区间修改+区间查询)

    二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2) ...

  3. 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]

    题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...

  4. szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】

    树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...

  5. HDU-4456 Crowd 二维树状数组+坐标转换

    题意:给定一个N*N的网格,现在M组操作,一种操作时改变网格上的某个单点的权值,另外一种操作是求到一点曼哈顿距离为小于等于k的所有的权值和,初始化网格所有点的权值为0. 解法:这题如果没有那些特定的条 ...

  6. hdu 1892二维树状数组

    这题我知道是用树状数组,可是好久没打树状数组了,就想用普通方法水过去~~结果--结果--水了好多方法都水不过,出题人真狠呐--我的水方法是对于每一次查询,初始化ans=(x2-x1+1)*(y2-y1 ...

  7. 洛谷P1527 [国家集训队] 矩阵乘法 [整体二分,二维树状数组]

    题目传送门 矩阵乘法 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入格式: 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共N* ...

  8. HDU-水饺基情 二维树状数组

    该题就是简单的二维树状数组,保留一份棋盘的最新状态即可,树状数组里面就只保留在原有基础上增加或者减少的某一种饺子的数量. 代码如下: #include <cstring> #include ...

  9. BZOJ.2738.矩阵乘法(整体二分 二维树状数组)

    题目链接 BZOJ 洛谷 整体二分.把求序列第K小的树状数组改成二维树状数组就行了. 初始答案区间有点大,离散化一下. 因为这题是一开始给点,之后询问,so可以先处理该区间值在l~mid的修改,再处理 ...

最新文章

  1. cmake 编译Release版本
  2. Effective C++ 条款05
  3. bootstrap 点击加号 表格_bootstrap中的输入组按钮,点击加号加1,减1子
  4. vb for循环 combobox的使用 Print的使用
  5. hdu 1556 Color the ball 线段树 区间更新
  6. php找不到库,64位系统下编译PHP找不到库文件问题 | 学步园
  7. Ajax.Net之数据类型
  8. SpringMVC学习指南【笔记4】数据绑定、表单标签库、转换器、格式化、验证器
  9. easypoi 导入错误返回流_金九银十面试准备季:异常+IO与NIO流
  10. 层次分析法(小白必看手机查看)
  11. linux怎样入门,Linux新手如何入门?给新手的四点建议!
  12. word中的表格复制到html代码,怎样将Word中的表格复制到Excel中还保持原有内容和格式?...
  13. 【多媒体】媒体的概念和分类
  14. 应届生程序员如何写好一份简历?
  15. 《剑来》语句摘录(四)
  16. html滚动条固定前几行,bootstrapTable定位行固定滚动条
  17. office中计算机剪贴画,Office 2010的剪贴画
  18. CVPR 2018 | 8篇论文、10+Demo、双项挑战赛冠军,旷视科技掀起CVPR产学研交流热潮
  19. Antd 的 Upload 上传组件 uploading 状态踩坑记
  20. 爬取网易云音乐两万条评论储存在MySQL服务器上

热门文章

  1. 计算机工作操作中一些问题,计算机二级考试中操作题常见问题之[电子表格]
  2. php基类控制器,控制器基类
  3. sqlalchemy与mysql映射
  4. MySQL String Types
  5. Pandas MultiIndex(多重索引)
  6. mysql+installer+community+5.7.9_win10系统,mysql-installer-community-5.7.19.0.msi安装
  7. vCenter 6.7 shell 和 SSH开启
  8. 阿里电商架构演变之路(二)
  9. 将报表模板中数据集的数据源名称与服务器中的数据源名称修改一致.,连接数据库,服务器端的几个常见错误...
  10. linux系统下树莓派拍照,如何在树莓派上使用图片特效