题解 | 【模板】差分

【模板】差分

https://www.nowcoder.com/practice/d9bdbb5c30a742ea9039c753dbb77f57

import sys
data=sys.stdin.read().splitlines()
n,q=map(int,data[0].split())
a=list(map(int,data[1].split()))
diff=[0]*(n+1)
for i in range(0,n+1):
    #确保不越界,0,a0.......an-1,0
    #求diff[i]=a[i]-a[i-1]
    diff[i]=(a[i] if i<n else 0)-(a[i-1] if i-1>=0 else 0)

for i in range(2,2+q):
    l,r,d=map(int,data[i].split())
    l=l-1#下标从0开始所以都要-1
    r=r-1
    #因为a[i]=diff[0]+...diff[i],所以只用在diff[l]处加d即可使l-r范围内的元素都加上d
    diff[l]+=d
    #为了不影响r之后的元素,在r+1处要-d
    diff[r+1]-=d
#复原回去
for i in range(n):
    #防止越界
    a[i]=diff[i]+(a[i-1] if i-1>=0 else 0)
    
print(*a)

全部评论

相关推荐

rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务