差分数组(简单易懂)一 什么是差分数组 差分数组本质上来说就是一个数组 可以用 O 1 的时间处理区间修改 二 差分数组的定义式 设原数组为 a 数组 差分数组为 d 数组 则对于 i 2 n 都有 d i a i a i 1 三 差分数组的性质 1 当我们需要更新区间 l r 时候 仅指加减运算 我们仅仅可以只更新 d l x d r 1 x 2 当我们需要单独查询原数组一个点的值的时候
一、什么是差分数组?
差分数组本质上来说就是一个数组,可以用O(1)的时间处理区间修改。
二、差分数组的定义式
设原数组为a数组,差分数组为d数组,则对于i∈[2,n],都有d[i]=a[i]-a[i-1].
三、差分数组的性质
1.当我们需要更新区间[l,r]时候(仅指加减运算),我们仅仅可以只更新d[l]+=x,d[r+1]-=x;
2.当我们需要单独查询原数组一个点的值的时候,我们不难发现出令
为d[i]的前缀和,那么a[i]=
;
3.当我们需要求原数组的前缀和的时候,我们可以设前x项和为
,则有:
四、例题:
AcWing 1952. 金发姑娘和 N 头牛
AC代码:
#include
#include
#include
#include
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/141708.html