题目链接: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));
}
}
}   


  

最新文章

  1. MyBatis 智能标签
  2. ANT的安装
  3. [原创]WinForm分页控件制作
  4. CRM Diagnostics CRM 2016 诊断
  5. Lisp中编写宏的步骤以及规范
  6. C# v3微信 access token 过期处理的问题
  7. 图层的核心动画(CABaseAnimation)续
  8. Mybatis逆向工程构建项目实例.
  9. css布局之三列布局
  10. .NET转Java
  11. 建立exception包,编写TestException.java程序,主方法中有以下代码,确定其中可能出现的异常,进行捕获处理。
  12. [ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains
  13. HighCharts开发说明及属性详解
  14. rac_进行grid自检时提示运行runfixup.sh脚本一例
  15. BZOJ 刷题记录 PART 6
  16. go-mysql,一个易用的mysql接口框架实现
  17. BLSTM的训练算法、解码算法以及模型的改进
  18. KMP算法详细分解
  19. hbot固件配置
  20. AJAX 请求后使用 JS 打开新标签页被阻止的解决方法

热门文章

  1. 从零开始学ios开发(十一):Tab Bars和Pickers
  2. ASP.NET MVC +EasyUI 权限设计(一)开篇
  3. javascript中出现identifier starts immediately after numeric literal错误原因以及解决方法
  4. spring配置事务
  5. javaZIP压缩文件
  6. 《深入理解javascript原型和闭包系列》 知识点整理(转)
  7. Leetcode#78 Subsets
  8. setDepthStencilState
  9. MoveManager管理类
  10. [设计模式] 7 适配器模式 adapter