题解:

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

代码:

#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. Java集合总结(List、Map、Set)

    集合的引入 当我们有种需求,需要存储多个元素的结构时,我们前面讲过数组,数组可以存储.但是数组也有它的弊端,使用的时候,必须先定义好长度,也就是数组的长度是固定,不能根据我们的需求自动变长或者变短. ...

  2. warning C4018: “<”: 有符号/无符号不匹配

    原因: 将两个不同的类型进行了比较,如: int a:unsigned short b: if(a>b)... 解决:改为同一种类型

  3. Qt Designer中文入门教程

    Qt Designer窗口布局Layouts提供了四种布局方法,他们是: Vertical Layout 纵向布局Horizontal Layout 横向布局Grid Layout  栅格布局Form ...

  4. 有时候shell中某些变量总是不能被改变是什么原因

    答:在子shell执行,那么变量的值总是不能如愿以偿的改变,示例如下: #!/bin/sh var="jello" cat "jello.txt" | whil ...

  5. jerichotab 初始化页面显示tab页中的第一个

    tab初始化默认显示第一个内容,但是tab标签显示最后一个. 源代码: $.fn.initJerichoTab({ renderTo: '#consumable', uniqueId: 'jerich ...

  6. 在SSM框架中,multfile转file

    import org.apache.commons.fileupload.disk.DiskFileItem; import org.springframework.web.multipart.Mul ...

  7. miRNA几大常用的数据库

    1.miRbasehttp://www.mirbase.org/2.miRDBhttp://www.mirdb.org/miRDB/policy.html3.miRandahttp://www.mic ...

  8. 证明: 2^0+2^1+2^2+2^3+.+2^n-1=(2^n)-1

    S=2^0+2^1+2^2+2^3+.+2^(n-1)2S=2^1+2^2+2^3+...+2^(n-1)+2^n两式相减,2S-S=2^n-2^0S=2^(n)-1

  9. iconv编码转换

    环境:cocos2dx 3.10 1.vs环境下编译windows版本,需要增加头文件和链接库①cocos2d-x-3.10\external\win32-specific\icon\include② ...

  10. 动态规划3--Help Jimmy

    动态规划3--Help Jimmy 一.心得 二.题目 三.分析 Jimmy跳到一块板上后,可以有两种选择,向左走,或向右走.走到左端和走到右端所需的时间,是很容易算的.如果我们能知道,以左端为起点到 ...