首页 > 【模板】二维差分
头像 bibibibi
发表于 2021-11-07 17:09:48
描述 给一个长度为nnn的数组aaa,mmm次操作,左上角为(x1,y1)(x_1,y_1)(x1​,y1​),右下角为(x2,y2)(x_2,y_2)(x2​,y2​)加kkk,问mmm次操作后的数组 思路 差分模板题,由于仅有一次查询,因此可以利用前缀和的性质,设数组sumsumsum表示mm 展开全文
头像 xqxls
发表于 2021-11-02 12:09:46
题意整理。 给定一个n行m列的矩阵,对这个矩阵进行q次操作,每次操作给定5个参数x1, y1, x2, y2, k,每次操作把以(x1, y1)为左上角,(x2,y2)为右下角的子矩阵的每个元素都加上k。 求q次操作之后的矩阵。 方法一(差分数组) 1.解题思路 思路和一维差分的情况非常相似,只 展开全文
头像 静寂旮旯
发表于 2022-05-05 12:38:06
解题思路: 建立差分二维数组,每一行按照一维差分数组建立cf[i][j]=v[i][j]−v[i][j−1],(1≤i≤n,1≤j≤m)cf[i][j] = v[i][j] - v[i][j-1],(1 \leq i \leq n,1 \leq j \leq m)cf[i][j]=v[i][j]− 展开全文
头像 寒武子星
发表于 2021-12-07 16:43:40
思路:创建一个DP数组,把每次操作修改的起始位置,修正的起始位置记录。利用前缀和把要修改位置填上修改值。最后把DP数组和原始列表相叠加。 while True: try: n, m, q = map(int, input().split()) l = [] 展开全文
头像 向光而行的你很犹豫
发表于 2023-04-27 21:28:35
#include<iostream> using namespace std; const int N = 1010; long long a[N][N], b[N][N]; void insert(int x1, int y1, int x2, int y2, int c) { 展开全文
头像 牛客589105292号
发表于 2025-08-07 23:13:40
二维差分回顾一维差分对于数组 A[1..n],定义差分数组 D D[0] = 0; D[i] = A[i] - A[i-1], i >= 1 区间修改:给区间 [L,R] 增加 k D[L] += k; D[R+1] -= k; D[L] += k; 那么计算前缀和数组A时, A[L:]所有 展开全文
头像 BraveCoder
发表于 2025-09-09 20:17:39
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int 展开全文
头像 其实是牛哥
发表于 2021-10-19 15:22:32
【模板】二维差分 难度:3星 类似二维前缀和的套路,开一个差分数组 sumsumsum,对于左上角 (x1,y1)(x_1,y_1)(x1​,y1​) 、右下角 (x2,y2)(x_2,y_2)(x2​,y2​) 的矩形所有数加上 kkk ,我们只需要把 sum[x1][y1]sum[x_1][y_ 展开全文
头像 言言7
发表于 2023-03-29 21:39:37
#include<iostream> #include<string.h> using namespace std; typedef long long ll; ll g[1005][1005],sum[1005][1005],d[1005][1005]; int main( 展开全文
头像 丨阿伟丨
发表于 2025-08-28 12:18:09
题目链接 【模板】二维差分 题目描述 给定一个 行 列的初始矩阵,进行 次操作。每次操作将指定的子矩阵中每个元素的值加上一个给定的整数 。所有操作完成后,输出最终的矩阵。 解题思路 本题要求对矩阵的子区域进行频繁的增减操作,这是二维差分算法的典型应用场景。 如果直接对每次操作都遍历子矩阵进行更 展开全文

等你来战

查看全部