差分

183 字
1 分钟
差分

一维差分#

  • 核心思想:把「区间 [L,R] 全部元素 +k」
  • 时间优化:O(R−L+1) 降到 O(1)
  • 差分数组 f 是原数组 a 的相邻元素之差序列
  1. 差分数组两种构造方式
1.
f[i]=a[i]-a[i-1];//a[0]=0;
2.
f[i]+=a[i];
f[i+1]-=a[i];
  1. 区间修改(m次)
f[l]+=k;
f[r+1]-=k;
  1. 还原数组(对f进行前缀和)
a[i]=f[1]+f[2]+...+f[i];

二维差分#

  • 核心思想:把「子矩阵 (x1,y1)~(x2,y2) 全部元素 +k」
  • 时间优化 O(nm) 降到 O(1)
  1. 性质 在差分矩阵 f 中,给单点 (x,y) 加 k,会影响原矩阵中以 (x,y) 为左上角、(n,m) 为右下角的整个子矩阵全部 +k。
  2. 子矩阵+k的四角操作
f[x1][y1] += k;
 f[x1][y2+1] -= k;
 f[x2+1][y1] -= k;
 f[x2+1][y2+1] += k;
  1. 还原原矩阵 对 f 做二维前缀和;前缀和

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Profile Image of the Author
HandlerOne
おかえり
公告
本站已整理 138 篇技术笔记,并按 8 条主线排成学习路线(141 站);站内搜索与桌宠对话均已上线。
分类
标签
最新动态
站点统计
文章
138
分类
12
标签
42
总字数
597,044
站点信息
构建平台
腾讯云 · Nginx
博客版本
v6.16.8
文章目录