一维

#include<bits/stdc++.h>
using namespace std ;
const int N=;
int n,m;
int a[N],b[N]; //a为前缀和,b为差分 差分和前缀和互为逆运算
void insert(int l,int r,int c) {
b[l]+=c;
b[r+]-=c;
}
int main() {
cin>>n>>m;
for(int i=; i<=n; i++) cin>>a[i];
for(int i=; i<=n; i++) insert(i,i,a[i]);
while(m--) {
int l,r,c;
cin>>l>>r>>c;
insert(l,r,c);
}
for(int i=; i<=n; i++) b[i]+=b[i-]; //把b数组变为自己的前缀和
for(int i=; i<=n; i++) cout<<b[i]<<" ";
return ;
}
//假定a初始时全部为0,b初始也全部为0
//m个操作,让前缀和 l 到 r区间每个数字都加上c时,那么就让b数组的l加上c,r+1减去c

二维

#include <iostream>
using namespace std;
const int N = ;
int n, m, q;
int a[N][N], b[N][N];
void insert(int x1, int y1, int x2, int y2, int c) {
b[x1][y1] += c;
b[x2 + ][y1] -= c;
b[x1][y2 + ] -= c;
b[x2 + ][y2 + ] += c;
}
int main() {
scanf("%d%d%d", &n, &m, &q);
for (int i = ; i <= n; i ++ )
for (int j = ; j <= m; j ++ )
scanf("%d", &a[i][j]);
for (int i = ; i <= n; i ++ )
for (int j = ; j <= m; j ++ )
insert(i, j, i, j, a[i][j]); //
while (q -- ) {
int x1, y1, x2, y2, c;
cin >> x1 >> y1 >> x2 >> y2 >> c;
insert(x1, y1, x2, y2, c); for (int i = ; i <= n; i ++ )
for (int j = ; j <= m; j ++ )
b[i][j] += b[i - ][j] + b[i][j - ] - b[i - ][j - ];
for (int i = ; i <= n; i ++ ) {
for (int j = ; j <= m; j ++ ) printf("%d ", b[i][j]);
puts("");
}
return ;
}
}

AcWing 差分一维加二维的更多相关文章

  1. AcWing 前缀和 一维加二维

    一维 #include<bits/stdc++.h> using namespace std; ; int n,m; int a[N],s[N]; int main(){ ios::syn ...

  2. Gym 102028J 扫描线/二维差分 + 解方程

    题意:有一个二维平面,以及n个操作,每个操作会选择一个矩形,使得这个二维平面的一部分被覆盖.现在你可以取消其中的2个操作,问最少有多少块地方会被覆盖? 思路:官方题解简洁明了,就不细说了:https: ...

  3. [动态差分+二维前缀和][小a的轰炸游戏]

    链接:https://ac.nowcoder.com/acm/contest/317/E来源:牛客网 题目描述 小a正在玩一款即时战略游戏,现在他要用航空母舰对敌方阵地进行轰炸 地方阵地可以看做是n× ...

  4. 洛谷 P3397 地毯 【二维差分标记】

    题目背景 此题约为NOIP提高组Day2T1难度. 题目描述 在n*n的格子上有m个地毯. 给出这些地毯的信息,问每个点被多少个地毯覆盖. 输入输出格式 输入格式: 第一行,两个正整数n.m.意义如题 ...

  5. 二维树状数组+差分【p4514】上帝造题的七分钟

    Description "第一分钟,X说,要有矩阵,于是便有了一个里面写满了\(0\)的\(n\times m\)矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为\((a,b)\),右 ...

  6. HDU - 6514 Monitor(二维差分)

    题意 给定一个\(n×m\)的矩阵.(\(n×m <= 1e7\)). \(p\)次操作,每次可以在这个矩阵中覆盖一个矩形. \(q\)次询问,每次问一个矩形区域中,是否所有的点都被覆盖. 解析 ...

  7. NOI 2012 魔幻棋盘 | 二维差分 + 二维线段树

    题目:luogu 2086 二维线段树,按套路差分原矩阵,gcd( x1, x2, ……, xn ) = gcd( xi , x2 - x1 , ……, xn - xn-1 ),必须要有一个原数 xi ...

  8. [luogu] P4514 上帝造题的七分钟 (树状数组,二维差分)

    P4514 上帝造题的七分钟 题目背景 裸体就意味着身体. 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a ...

  9. Codeforces 1262E Arson In Berland Forest(二维前缀和+二维差分+二分)

     题意是需要求最大的扩散时间,最后输出的是一开始的火源点,那么我们比较容易想到的是二分找最大值,但是我们在这满足这样的点的时候可以发现,在当前扩散时间k下,以这个点为中心的(2k+1)2的正方形块内必 ...

随机推荐

  1. CSS标题线(删除线贯穿线效果)实现之一二

    缘起 其实看到这个问题,心里已经默默把代码已经码好了~,不就想下面这样嘛:JSBIN代码示例 嗯,是的,我们日常确实基本上就是用的这种方式,也没啥问题呀~,来个背景色定下位就欧拉欧拉的了. 不过,因为 ...

  2. ABS与PC材质

    PC材料和ABS材料都是最常用的塑料材质,它们在材质.价格.性能上都有不同点. (一)PC材料 优点:PC是一种综合性能优良的非晶型热塑性树脂,具有优异的电绝缘性.延伸性.尺寸稳定性及耐化学腐蚀性,较 ...

  3. Django-模型(二)

    条件查询 字段查询 实现sql中where的功能,调用过滤器filter().exclude().get(),下面以filter()为例. 通过"属性名_id"表示外键对应对象的i ...

  4. 安装Flink集群

    1.Windows安装 https://blog.csdn.net/clj198606061111/article/details/99694033 2.Linux安装 https://blog.cs ...

  5. ansible-jinjia2模板

    1. 含义 是基于python的模板引擎,包含变量和表达式两部分,这两者在模板求值的时候会被替换为值: 模板中还有标签,控制模板的逻辑 2. 基础语法 - 模板的表达式都包含在分隔符"{{ ...

  6. Wannafly Camp 2020 Day 3D 求和 - 莫比乌斯反演,整除分块,STL,杜教筛

    杜教筛求 \(\phi(n)\), \[ S(n)=n(n+1)/2-\sum_{d=2}^n S(\frac{n}{d}) \] 答案为 \[ \sum_{d=1}^n \phi(d) h(\fra ...

  7. Linux shell 只删除目录下所有(不知道文件名字)文件,只删除文件夹

    #!/bin/sh RM="rm -rf" function delete_all_dir() { for i in `ls` do if [ -d $i ];then $RM $ ...

  8. phpstudy+phpstorm 浏览器没有解析php文件,直接显示源码

    用phpstorm编辑完项目,右键浏览器预览时页面报错:502 Bad Gateway PhpStorm 2019.1 此时默认打开的地址是:localhost:63339/开头的一长串…… 查资料说 ...

  9. mac 复制文件路径

    选中文件 ctrl + option +c  可以复制文件路径

  10. mp3格式音频 不能立即播放

    原因是mp3的meta信息在mp3文件后面,所以要都加载完才能播放 而m4a 格式的 可以立即播放