题解:

二维树状数组,再矩阵推一下

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=;
int n,m,q;
LL T[][N][N];
int TN,TM;
void add(LL (*T)[N],int x,int y,LL v)
{
if (!x||!y)return;
for (int i=x;i<=TN;i+=i&-i)
for (int j=y;j<=TM;j+=j&-j)T[i][j]+=v;
}
LL sum(LL (*T)[N],int x,int y)
{
if (!x||!y)return 0LL;
LL v=;
for (int i=x;i;i-=i&-i)
for (int j=y;j;j-=j&-j)v+=T[i][j];
return v;
}
void add(int x,int y,LL v)
{
add(T[],x,y,v);
add(T[],x,y,v*(-x));
add(T[],x,y,v*(-y));
add(T[],x,y,v*(-x)*(-y));
}
LL sum(int x, int y)
{
return (x+)*(y+)*sum(T[],x,y)+(y+)*sum(T[],x,y
)+(x+)*sum(T[],x,y)+sum(T[],x,y);
}
void add(int x1,int y1,int x2,int y2,LL v)
{
add(x1,y1,v);
add(x2+,y1,-v);
add(x1,y2+,-v);
add(x2+,y2+,v);
}
LL sum(int x1, int y1, int x2, int y2)
{
return sum(x2,y2)-sum(x1-,y2)-sum(x2,y1-)+sum(x1-,y1-);
}
int main()
{
scanf("%d%d%d",&n,&m,&q);
TN=n;TM=m;
for (int i=;i<=m;i++)
for (int j=;j<=n;j++)
{
int x;
scanf("%d",&x);
add(j,i,j,i,x);
}
for (int i=;i<q;i++)
{
int x1,y1,x2,y2,z,a;
scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&z,&a);
LL s = sum(x1, y1, x2, y2);
if (s<(LL)z*(x2-x1+)*(y2-y1+))add(x1,y1,x2,y2,a);
}
for (int i=;i<=m;i++)
for (int j=;j<=n;j++)
printf("%lld%c",sum(j,i,j,i),j==n?'\n':' ');
}

51nod1210的更多相关文章

随机推荐

  1. Python3基础 raise 产生RuntimeError 异常

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. USB Compound Device,USB复合设备 ; USB Composite Device,USB组合设备【转】

    本文转载自:https://blog.csdn.net/autumn20080101/article/details/52776863 科普下USB复合设备和USB组合设备的区别. 关键字 Commu ...

  3. 小Z的袜子(莫队分块)题解

    小Z的袜子(hose) 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  4. UDP的socketasynceventargs

    C# 使用 SocketAsyncEventArgs 实现UdpSocket系列 http://www.cnblogs.com/zwq194/archive/2012/10/30/2746393.ht ...

  5. Unity3D学习笔记(八):四元素和书籍推荐

    书籍推荐: 3D数学基础:图形与游戏开发——游戏软件开发专家系列(美)邓恩 Unity Shader入门精要 冯乐乐(92年) 数据结构(Python语言描述) 数据结构.算法与应用(C++语言描述) ...

  6. Facebook广告API系列 Business Manager

    Facebook广告API系列 Business Manager Business Manager,是个很牛叉的东西,有多牛叉呢? 因为facebook已经越来越商业化了,上面的每个账号,页面,往往都 ...

  7. 操作构造字符串化宏#define STRINGIZE(x) #x

    c++test工程单元测试中报错 “STRINGIZE” 未定义错误 解决方案:在头文件定义宏STRINGIZE #符号把一个符号直接转换为字符串,例如:#define STRINGIZE(x) #x ...

  8. POJ 3628 Bookshelf2(0-1背包)

    http://poj.org/problem?id=3628 题意:给出一个高度H和n个牛的高度,要求把牛堆叠起来达到H,求出该高度和H的最小差. 思路:首先我们计算出牛的总高度sum,sum-H就相 ...

  9. LookupError: Couldn't find path to unrar library.

    LookupError: Couldn't find path to unrar library. 意思是找不到 unrar library的路径,这里我们就需要去下载这个unrar library, ...

  10. 搜索:ElasticSearch OR MySQL?

    背景 我们开发一般的企业级Web应用,其实从本质上来说,都是对数据的增删查改进行各个维度的包装.所以说,不管你的程序如何开发,基本上,都离不开数据本身.那么,在开发企业级应用的过程中,很多同学一定遇到 ...