一维

#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. jenkins用户权限配置 Role-based Authorization Strategy

    插件简介 插件名称 Role-based Authorization Strategy 插件介绍 Role Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目, ...

  2. CodeForces - 1105D 多源搜索

    #include<bits/stdc++.h> using namespace std; typedef long long ll; struct node{ int x,y; ll se ...

  3. pandas学习笔记之删除指定列

    删除指定 def df["列名"] del df4["韩国地震影响"] 直接删除,df4中不在含有"韩国地震影响"这一列了 drop 不改变 ...

  4. MySQL的数据库备份

    MySQL的数据库备份 备份的原因: 1.保证重要数据不丢失 2.数据转移 MySQL数据库备份方式: 1.方法1:在Sqlyog这种可视化工具中手动导出 2.方法2:直接拷贝物理文件(就是data文 ...

  5. CF1254E Send Tree to Charlie

    题意 讲不太清楚,看英文吧 cf 做法 在正式开始之前,我们先来玩一玩性质 首先考虑全\(0\)的情况,即本质不同的方案数 性质1:方案数并不为(n-1)!,即方案与结果不为双射 考虑一条边将树分为两 ...

  6. C# 引入Sqlite 未能加载文件或程序集“System.Data.SQLite

    个人博客 地址:https://www.wenhaofan.com/article/20190501224046 问题 在Visual Studio 中 使用NuGet 通过 install-pack ...

  7. mysql 视图、触发器、事务、存储过程、函数

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  8. substring && substr

    let string = '0123456';string.substring(0,3);//start: number, end?: number 012(而非 0123)string.substr ...

  9. phpstorm同步服务器文件

    配置服务器 1.连接配置 打开菜单栏 Tools -> Deployment -> Configuration 点击 + 选择 SFTP,并填写相关服务器信息: Type:连接类型,这里选 ...

  10. (转)java 虚拟机内存划分

    深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战  深入理解java虚拟机(三):String.intern()-字符串常量池深入理解j ...