BZOJ 3132 上帝造题的七分钟(二维树状数组)
2024-08-30 07:35:35
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3132
题意:给出一个矩阵,两种操作:(1)将某个子矩阵的数字统一加上某个值;(2)查询某个子矩阵的数字之和。
思路:对于矩阵A,A[i][j]表示[i,j]-[n,m]的增量。那么子矩阵[1,1]-[x,y]的总和为:
struct BIT
{
int a[N][N]; void add(int x,int y,int t)
{
int i,j;
for(i=x;i<N;i+=i&-i)
{
for(j=y;j<N;j+=j&-j) a[i][j]+=t;
}
} int get(int x,int y)
{
int ans=0;
int i,j;
for(i=x;i;i-=i&-i)
{
for(j=y;j;j-=j&-j) ans+=a[i][j];
}
return ans;
}
}; BIT a,b,c,d; void add(int x1,int y1,int x2,int y2,int t)
{
a.add(x1,y1,t); a.add(x2+1,y1,-t);
a.add(x1,y2+1,-t); a.add(x2+1,y2+1,t); b.add(x1,y1,t*x1); b.add(x2+1,y1,-t*(x2+1));
b.add(x1,y2+1,-t*x1); b.add(x2+1,y2+1,t*(x2+1)); c.add(x1,y1,t*y1); c.add(x2+1,y1,-t*y1);
c.add(x1,y2+1,-t*(y2+1)); c.add(x2+1,y2+1,t*(y2+1)); d.add(x1,y1,t*x1*y1); d.add(x2+1,y1,-t*(x2+1)*y1);
d.add(x1,y2+1,-t*x1*(y2+1)); d.add(x2+1,y2+1,t*(x2+1)*(y2+1));
} int get(int x,int y)
{
return (x+1)*(y+1)*a.get(x,y)-(y+1)*b.get(x,y)-(x+1)*c.get(x,y)+d.get(x,y);
} int get(int x1,int y1,int x2,int y2)
{
return get(x2,y2)-get(x2,y1-1)-get(x1-1,y2)+get(x1-1,y1-1);
} int n,m; int main()
{
char op[10];
int x1,y1,x2,y2,k;
RD(op);
RD(n,m);
while(scanf("%s",op)!=-1)
{
if(op[0]=='L')
{
RD(x1,y1); RD(x2,y2,k);
add(x1,y1,x2,y2,k);
}
else
{
RD(x1,y1); RD(x2,y2);
PR(get(x1,y1,x2,y2));
}
}
}
最新文章
- MyBatis 智能标签
- ANT的安装
- [原创]WinForm分页控件制作
- CRM Diagnostics CRM 2016 诊断
- Lisp中编写宏的步骤以及规范
- C# v3微信 access token 过期处理的问题
- 图层的核心动画(CABaseAnimation)续
- Mybatis逆向工程构建项目实例.
- css布局之三列布局
- .NET转Java
- 建立exception包,编写TestException.java程序,主方法中有以下代码,确定其中可能出现的异常,进行捕获处理。
- [ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains
- HighCharts开发说明及属性详解
- rac_进行grid自检时提示运行runfixup.sh脚本一例
- BZOJ 刷题记录 PART 6
- go-mysql,一个易用的mysql接口框架实现
- BLSTM的训练算法、解码算法以及模型的改进
- KMP算法详细分解
- hbot固件配置
- AJAX 请求后使用 JS 打开新标签页被阻止的解决方法
热门文章
- 从零开始学ios开发(十一):Tab Bars和Pickers
- ASP.NET MVC +EasyUI 权限设计(一)开篇
- javascript中出现identifier starts immediately after numeric literal错误原因以及解决方法
- spring配置事务
- javaZIP压缩文件
- 《深入理解javascript原型和闭包系列》 知识点整理(转)
- Leetcode#78 Subsets
- setDepthStencilState
- MoveManager管理类
- [设计模式] 7 适配器模式 adapter