差分数组是一种高效处理区间更新的数据结构
2026-04-25 20:12:15
发布于:江西
7阅读
0回复
0点赞
差分数组是一种高效处理区间更新的数据结构技巧,核心思想是存储相邻元素的差值而非元素本身,将区间操作转化为端点操作,从而将区间更新的时间复杂度从 O(n) 降到 O(1)。
#include<bits/stdc++.h>
using namespace std;
int a[1000000],D[1000000];
int main()
{
int n,p,l,r,x,small=108;
cin>>n>>p;
for(int i=1;i<=n;i++){
cin>>a[i];
D[i]=a[i]-a[i-1];
}
while(p--){
cin>>l>>r>>x;
D[l]+=x,D[r+1]-=x;
}
for(int i=1;i<=n;i++){
a[i]=D[i]+a[i-1];
if(a[i]<small) small=a[i];
}
cout<<small;
return 0;
}
全部评论 3
- 置顶
差分数组是一种高效处理区间更新的数据结构技巧,核心思想是存储相邻元素的差值而非元素本身,将区间操作转化为端点操作,从而将区间更新的时间复杂度从 O(n) 降到 O(1)。
1周前 来自 江西
1





1周前 来自 江西
1
差分数组特别适用于以下场景:
频繁的区间增减操作
需要多次区间操作后查询最终结果
处理大量区间覆盖问题
航班预订、会议室安排等问题1周前 来自 江西
1
1周前 来自 江西
0
差分数组的主要优势在于它可以高效处理区间更新操作。对于传统的数组,如果我们想对区间[i, j]内的所有元素增加一个值val,需要遍历整个区间进行逐个修改,时间复杂度为O(n)。而使用差分数组,我们只需要修改两个端点
1周前 来自 江西
1






1周前 来自 江西
1





有帮助,赞一个