差分模板

一维差分:

给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c

二维差分:

给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c:
S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, S[x2 + 1, y2 + 1] += c

原文地址:https://www.cnblogs.com/qdu-lkc/p/12202489.html

时间: 2024-08-30 17:29:01

差分模板的相关文章

前缀和和差分模板(AcWing 795-798)

前缀和分一维前缀和和二维前缀和,前缀和可以帮我们快速统计一段范围内的合. 需要简单的理解 一维前缀和 —— 模板题 AcWing 795. 前缀和S[i] = a[1] + a[2] + ... a[i]:a[l] + ... + a[r] = S[r] - S[l - 1]: 二维前缀和 —— 模板题 AcWing 796. 子矩阵的和S[i, j] = 第i行j列格子左上部分所有元素的和以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为:S[x2, y2] - S[x1 -

Educational Codeforces Round 52 (Rated for Div. 2)【A,B,C】【C题:贪心+约束差分模板】

水题.仔细看题 1 #include<bits/stdc++.h> 2 3 using namespace std; 4 #define int long long 5 signed main(){ 6 int _; 7 cin>>_; 8 while(_--){ 9 int s,a,b,c; 10 cin>>s>>a>>b>>c; 11 int ans=0; 12 ans=(s/(a*c))*a+(s/(a*c))*b+(s%(a*

Codeforces Round #578 (Div. 2) 二维差分 可做模板

题意: 在n*n的矩阵中,你可以选择一个k*k的子矩阵,然后将这个子矩阵中的所有B全部变为W,问你怎么选择这个子矩阵使得最终的矩阵中某一行全是W或者某一列全是W的个数最多 题解:考虑每一行和每一列,对于特定的一行来说,要想让其全变为W,那么子矩阵的左上角端点是在一个范围中的,因此我们可以把范围中的每一个值加1 为了速度选择用二维差分来做,最终矩阵中的最大值就是答案 此题可以作为二维差分模板 #include<bits/stdc++.h> #define forn(i, n) for (int

Local Features

局部特征入门 局部特征(local features),是近来研究的一大热点.大家都了解全局特征(global features),就是方差.颜色直方图等等.如果用户对整个图像的整体感兴趣,而不是前景本身感兴趣的话,全局特征用来描述总是比较合适的.但是无法分辨出前景和背景却是全局特征本身就有的劣势,特别是在我们关注的对象受到遮挡等影响的时候,全局特征很有可能就被破坏掉了.而所谓局部特征,顾名思义就是一些局部才会出现的特征,这个局部,就是指一些能够稳定出现并且具有良好的可区分性的一些点了.这样在物

【AtCoder2442】フェーン現象 (Foehn Phenomena)

题面 分析 这道题其实是差分模板qvq 区间修改 单点查询 而且题面也疯狂暗示,相邻两点海拔差,用差分简直是按照出题人意思来的,而且人性化的是n+1个点刚好n个区间,查询也只用查询第n点. 同时,知道海拔差的情况下是可以算出温度的,所以本质上这个差分数组合理也是因为可以通过前缀和倒推出温度. 所以对于每个修改,其实只有一头一尾两个点受了影响,即l-1和l的高度差影响温度和r和r+1的高度差影响温度,中间相对高度是不变的,不影响温度. 就修改这两个点就OK了.因为查询的是第n个点,其实答案可以一直

《特征提取与图像处理》

[英]Mark S.Nixon ·电子工业·2010·2版 12345678 第一章 绪论 横截面图 cross-section 合成 synthesized 光感元分两类:视杆细胞(rod )用于黑白视觉(暗视觉).另一类是视锥细胞,用于色彩视觉(明视觉). 视锥细胞一千万,分布在中央槽五度以内.一亿视杆细胞分布在中央槽二十到五度内. 视杆细胞就一种,视锥细胞有三种:s波长m波长l波长 联合图像专家组 Joint Photographic Expert Group 运动图像专家组 Moving

算法基础课相关代码模板

算法基础课相关代码模板 活动链接 -- 算法基础课 快速排序算法模板 -- 模板题 AcWing 785. 快速排序 void quick_sort(int q[], int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i] < x); do j -- ; while (q[j] > x);

差分约束系统【模板】

差分约束系统:如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如 xj - xi<= bk ( i , j ∈ [1,n],k ∈ [1,m]),则称其为差分约束系统. 例如如下的约束条件: X1 - X2 <= 0 X1 - X5 <= -1 X2 - X5 <= 1 X3 - X1 <= 5 X4 - X1 <= 4 X4 - X3 <= -1 X5 - X3 <= -3 X5 - X4 <= -3 全都是两个未知数的差小于等于某个常数

poj1201差分约束模板题

http://poj.org/problem?id=1201 题意是给你n个区间,每个区间有一个边界[a,b],以及一个整数c 要满足每个区间[a,b]都至少有c个元素 解题方法就是构造差分约束公式 (a-1)-b<=-c 建立一条边从b到a-1,权值为-c 然后还要加上两个条件 (i+1)-i>=0 -> i-(i+1)<=0 (i+1)-i<=1 #include <cstdio> #include<cstring> #include<ios