差分数组C++「建议收藏」

差分数组C++「建议收藏」差分数组在数组某一段数值同乘以一个值,或者求某数组的前n项和非常方便inta[]={0,1,2,3,4,5};b[i]=a[i]-a[i-1];(1<i≤n,b[1]=a[1],a[0]=b[0]=0)b[]={0,1,1,1,1,1}则称b[]是a的差分数组,它具有的性质是a[i]=b[i]+b[i-1]+…+b[1];如果要在数…

大家好,又见面了,我是你们的朋友全栈君。

差分数组在数组某一段数值同乘以一个值,或者求某数组的前n项和非常方便

int a[] = { 
   0,1,2,3,4,5};
b[i] = a[i] - a[i-1];(1<i≤n,b[1]=a[1],a[0] = b[0] = 0)

b[ ] = {0,1,1,1,1,1}
则称b[ ]是a的差分数组,它具有的性质是a[i] = b[i] + b[i-1] + … + b[1];

如果要在数组a的【x,y】区间上每个元素加上z,那么只要修改b[x] 和 b[y+1]这两个值
也就是:

b[x] += z;
b[y+1] -= z;

除此之外,我们还有

f[i]=f[i-1]+d[i](1<i≤n,f[1]=d[1]=a[1]);

sum[i]=sum[i-1]+f[i](1<i≤n,sum[1]=f[1]=d[1]=a[1])

所以 s u m [ i ] = ∑ a [ i ] sum[i] = \sum a[i] sum[i]=a[i]

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134548.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号