详细解释见小结。http://blog.csdn.net/zmx354/article/details/31740985

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <cmath>
#include <stack>
#include <map>#pragma comment(linker, "/STACK:1024000000");
#define EPS (1e-8)
#define LL long long
#define ULL unsigned long long
#define _LL __int64
#define _INF 0x3f3f3f3f
#define Mod 9999991
#define lowbit(x) (x&(-x))using namespace std;const int N = 2049;int a[N][N];
int ax[N][N];
int ay[N][N];
int axy[N][N];void Updata(int a[N][N],int x,int y,int n,int m,int data)
{for(; x <= n; x += lowbit(x)){for(int t = y; t <= m; t += lowbit(t)){a[x][t] += data;}}
}int Query(int a[N][N],int x,int y)
{int sum = 0;while(x > 0){for(int t = y; t > 0; t -= lowbit(t)){sum += a[x][t];}x -= lowbit(x);}return sum;
}int sum(int x,int y)
{return Query(a,x,y)*(x+1)*(y+1) - (y+1)*Query(ax,x,y) - (x+1)*Query(ay,x,y) + Query(axy,x,y);
}void Add(int x1,int y1,int x2,int y2,int n,int m,int data)
{Updata(a,x1,y1,n,m,data);Updata(a,x2+1,y1,n,m,-data);Updata(a,x1,y2+1,n,m,-data);Updata(a,x2+1,y2+1,n,m,data);Updata(ax,x1,y1,n,m,x1*data);Updata(ax,x2+1,y1,n,m,-(x2+1)*data);Updata(ax,x1,y2+1,n,m,-x1*data);Updata(ax,x2+1,y2+1,n,m,(x2+1)*data);Updata(ay,x1,y1,n,m,y1*data);Updata(ay,x2+1,y1,n,m,-y1*data);Updata(ay,x1,y2+1,n,m,-(y2+1)*data);Updata(ay,x2+1,y2+1,n,m,(y2+1)*data);Updata(axy,x1,y1,n,m,x1*y1*data);Updata(axy,x2+1,y1,n,m,-(x2+1)*y1*data);Updata(axy,x1,y2+1,n,m,-x1*(y2+1)*data);Updata(axy,x2+1,y2+1,n,m,(x2+1)*(y2+1)*data);
}int main()
{int n,m;char order[10];int x1,x2,y1,y2,data;memset(a,0,sizeof(a));memset(ax,0,sizeof(ax));memset(ay,0,sizeof(ay));memset(axy,0,sizeof(axy));while(scanf("%s",order) != EOF){if(order[0] == 'L'){scanf("%d %d %d %d %d",&x1,&y1,&x2,&y2,&data);Add(x1,y1,x2,y2,n,m,data);}else if(order[0] == 'k'){scanf("%d %d %d %d",&x1,&y1,&x2,&y2);printf("%d\n",sum(x2,y2) - sum(x1-1,y2) - sum(x2,y1-1) + sum(x1-1,y1-1));}else{scanf("%d %d",&n,&m);}}return 0;
}

转载于:https://www.cnblogs.com/claireyuancy/p/7237823.html

二维树状数组的区间加减及查询 tyvj 1716 上帝造题的七分钟相关推荐

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

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

  2. HDU 5465 Clarke and puzzle (二维树状数组维护区间异或)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5465 解题思路: 因为要对大量的区间进行异或,所以考虑用二维树状数组就行维护. #include< ...

  3. 树状数组 / 二维树状数组

    一维树状数组 · 单点修改 + 单点查询: 直接使用即可 · 区间修改 + 单点查询: 另外维护一个维护前缀和的树状数组,查询时查询与原值相加即可. · 区间修改 + 区间查询: 若要查询区间$[1, ...

  4. hdu 5465 Clarke and puzzle (二维树状数组+nim博弈)

    解析: 利用二维树状数组来区间询问异或和,以及单点更新,然后利用nim博弈的结论判断胜负. mymy codecode #include <cstdio> #include <cst ...

  5. UESTC 1601 艾尔大停电2 二维树状数组+区间更新

    艾尔大停电2 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  S ...

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

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

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

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

  8. hdu 1892二维树状数组

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

  9. POJ2155 - Matrix(二维树状数组)

    POJ2155 - Matrix 文章目录 题目 题解: 代码 题目 给你一个二维矩阵,初始化为0,然后可以进行两次操作: C:x,y,x1,y2 对该小矩阵内的数进行取反 Q:查询某个点是0还是1 ...

  10. Hihocoer 1336 - Matrix Sum 二维树状数组

    题意 给我们个n*n的矩阵 有m个操作让我们 操作有两种 Add x y v对(x,y)上的元素加v Sum x1 y1 x2 y2 对(x1,y1)为左上角(x2,y2)为右下角的矩阵求和并mod ...

最新文章

  1. npm安装过程出现的问题及解决方式
  2. GraphQL及元数据驱动架构在后端BFF中的实践
  3. 【总结】升级Xcode8遇到的问题及解决方案!!! [转]
  4. html块中的内容垂直居中,css如何设置行内元素与块级元素的内容垂直居中
  5. 用until编写一段shell程序,计算1~10的平方
  6. 第四篇:new和delete的基本用法
  7. 【C#】详解C#异常
  8. 模拟 之 zoj 3818 Pretty Poem
  9. SQL 复习二(数据查询语言)
  10. 前端-html实现省份、地市、区县三级联动
  11. IOUtils工具类简介及应用
  12. 如何更改itunes备份位置_Mac怎么修改iTunes的备份路径 如何在 Mac 中修改iTunes的备份路径...
  13. 工程总承包(EPC)项目经理培训项目背景介绍
  14. SAR成像处理算法_CS算法_原理
  15. 32位无符号整数快开方函数
  16. 从外观来看微型计算机由哪几个部分组成,福师11春学期《计算机应用基础》在线作业一...
  17. 素食崇尚的是养身和修心的生活方式,鼎沐素食让你身心共融
  18. 11个开源测试自动化框架,如何选?
  19. mysql按范围查找_Mysql实现按距离排序、范围查找
  20. Activiti6--入门学习--错误边界事件

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 0557-21T广告设计 参考试题
  2. 【渝粤教育】国家开放大学2018年春季 0089-21DInternet和Intranet应用 参考试题
  3. 【渝粤教育】国家开放大学2018年春季 0266-22T设计构成 参考试题
  4. ubuntu16.04中 启动 Error starting userland proxy: listen tcp 0.0.0.0:5900: bind: address already in use
  5. python之路_自定义forms组件
  6. [转]tar 命令使用
  7. [ POI 2005 ] Bank Notes
  8. 索引大小对语句执行速度的影响
  9. Datatables+Bootstrap
  10. NSIS 设置系统变量