题解 | 【模板】差分
【模板】差分
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)
腾讯成长空间 5981人发布
