P4514 上帝造题的七分钟

二维树状数组

差分维护区间加法,区间求和

#include<cstdio>
int read(){
char c=getchar(); int x=,f=;
while(c<''||c>'') f=f&&(c!='-'),c=getchar();
while(''<=c&&c<='') x=x*+c-,c=getchar();
return f?x:-x;
}
int n,m; char q[];
struct Tree_array{
int s[][];
void add(int x,int y,int v){
for(int i=x;i<=n;i+=i&-i) //直接用x,y来lowbit会挂掉,我也不知道为什么
for(int j=y;j<=m;j+=j&-j)
s[i][j]+=v;
}
int sum(int x,int y){
int re=;
for(int i=x;i;i-=i&-i)
for(int j=y;j;j-=j&-j)
re+=s[i][j];
return re;
}
}a,ai,aj,aij;
inline void Add(int i,int j,int v){
a.add(i,j,v),ai.add(i,j,v*i),aj.add(i,j,v*j),aij.add(i,j,v*i*j);
}
inline int Sum(int x,int y){
return a.sum(x,y)*(x*y+x+y+)-ai.sum(x,y)*(y+)-aj.sum(x,y)*(x+)+aij.sum(x,y);
}
int main(){
scanf("%s",q); n=read(); m=read(); int a,b,c,d,v;
while(~scanf("%s",q)){
a=read(); b=read(); c=read(); d=read();
if(q[]=='L') v=read(),Add(a,b,v),Add(a,d+,-v),Add(c+,b,-v),Add(c+,d+,v);
else printf("%d\n",Sum(c,d)-Sum(a-,d)-Sum(c,b-)+Sum(a-,b-));
}return ;
}

最新文章

  1. Android-- ImageLoader-- UIL doesn&#39;t support scheme(protocol) by default [pg].
  2. 使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组件
  3. Nancy总结(二)记一次Nancy 框架中遇到的坑
  4. idea 工程添加svn关联
  5. 为什么学习Python
  6. [笔记] MySql Workbench 导出表结构和数据报错 mysqldump: [ERROR] unknown variable &#39;delayed-insert=FALSE&#39;
  7. FZU 1686 龙之谜 重复覆盖
  8. Failed to connect to VMware Lookup Service……SSL certificate verification failed
  9. 使用Fiddler进行手机端抓包
  10. java算法:统计数字-将数字转换成字符串,然后使用字符串String.valueOf()方法进行判断
  11. [No000011B]为什么有些程序员悄无声息渡过35岁中年危机?
  12. 初始kafka
  13. 如何换网页IP代理
  14. postgresql 脏读-dirtied
  15. Python实现熵值法确定权重
  16. C语言入门教程-(1)简介及搭建环境
  17. JAVA基础之——Thrift原理及应用
  18. 解决ubuntu在当前位置打开终端功能
  19. 第八次作业——项目UML设计
  20. 华为交换机S5700系列配置镜像端口(M:N)

热门文章

  1. 【LuoguP5171】Earthquake
  2. delphi datetimetounix 和 unixtodatetime 全平台(FIREMONKEY)时区修正
  3. C# 基础:DataTable操作、发邮件
  4. idea导入eclipse云笔记cloud_note项目 成功运行
  5. php 处理错误和异常技巧
  6. 使用struts2的内置标签,采用submit()提交表单时,浏览器报404
  7. 170911-关于maven的知识点
  8. 搭建wordpress-安装xshell
  9. UART协议详解
  10. tjuthesis 图标题左对齐修改办法