Acwing-基础算法课笔记之基础算法(差分)

Acwing-基础算法课笔记之基础算法(差分)

一、一维差分

1、差分的概念

对于一个给定的序列a,它的差分序列b定义为:
b 1 = a 1 b1=a1 b1=a1, b i = a i − a i − 1 bi=ai-ai-1 bi=ai−ai−1, ( 2 ⩽ i ⩽ n ) (2\leqslant i\leqslant n) (2⩽i⩽n)

b是a的差分序列,a是b的前缀和序列,差分与前缀和是一对互逆运算 。
a 1 = b 1 a1=b1 a1=b1,
a 2 = b 2 + a 1 = b 2 + b 1 a2=b2+a1=b2+b1 a2=b2+a1=b2+b1,
a 3 = b 3 + a 2 = b 3 + b 2 + b 1 a3=b3+a2=b3+b2+b1 a3=b3+a2=b3+b2+b1,证毕

2、差分思想

把序列a的区间 l , r l,r l,r加d,等价于其差分序列b的点 b l bl bl加d,点 b r + 1 br+1 br+1减d,其他位置不变。即把原序列的"区间操作 "转化为差分序列的"两点操作 "。多次区间操作完成后,再利用前缀和还原。时间复杂度从 O ( n 2 ) O(n^2) O(n2)降为 O ( n ) O(n) O(n)

二、二维差分

操作流程

(x1,y1) * * * *
* * * * *
* * * * *
* * * * (x2,y2)

① b x 1 , y 1 + = c bx1,y1+=c bx1,y1+=c:坐标 ( x 1 , y 1 ) (x1,y1) (x1,y1)右下区域的所有数加 c c c;

② b x 2 + 1 , y 1 − = c bx2+1,y1-=c bx2+1,y1−=c:坐标 ( x 2 + 1 , y 1 ) (x2+1,y1) (x2+1,y1)右下区域的所有数减 c c c;

③ b x 1 , y 2 + 1 − = c bx1,y2+1-=c bx1,y2+1−=c:坐标 ( x 1 , y 2 + 1 ) (x1,y2+1) (x1,y2+1)右下区域的所有数减 c c c;

④ b x 2 , y 2 + = c bx2,y2+=c bx2,y2+=c:坐标 ( x 2 , y 2 ) (x2,y2) (x2,y2)右下区域的所有数多减了 c c c,所以要全部加 c c c。

相关推荐
H.莓飛8 分钟前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
要开心吖ZSH29 分钟前
MySQL 慢 SQL 排查操作手册-个人笔记版
java·笔记·sql·mysql·慢查询
好想像大佬一样能够ak所有1 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
aqiu1111111 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
黄金龙PLUS1 小时前
如何基于置换算法来设计对称加密算法
算法·网络安全·密码学·哈希算法·同态加密
不会就选b1 小时前
算法日常・每日刷题--<动态规划>14
算法
赛博守夜人1 小时前
跨境业务与出海合规之九:海外买量投放与营销虚假流量(Ad Fraud):跨国机房群控与归因欺诈识别算法
算法·安全
咖啡忍者2 小时前
【SAP】程制造生产计划PP-PI(Production Planning for Process Industries)
笔记
Titan20243 小时前
MySQL索引学习笔记
笔记·学习·mysql
zhangrelay3 小时前
Arduino-MEGA-ESP单片机理论课笔记02-硬件-2026
笔记·单片机·嵌入式硬件