差分
一、差分
题目重述
输入一个长度为 n的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。请你输出进行完所有操作后的序列。
输入格式
第一行包含两个整数 n和 m。
第二行包含 n个整数,表示整数序列。
接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。
输出格式
共一行,包含 n个整数,表示最终序列。
输入样例:
6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1
输出样例:
3 4 5 3 4 2
二、代码
n,m=map(int,input().split())
#使得输入的数字的下标从1开始
a=[0]+list(map(int,input().split()))
#够着一个差分数组
b=[0]*(n+10)
for i in range(1,n+1):
b[i]=a[i]-a[i-1]
#对差分数组进行操作
while m:
m-=1
l,r,c=map(int,input().split())
b[l]+=c
b[r+1]-=c
# print(b)
#还原原数组后操作过的数组
for i in range(1,n+1):
a[i]=a[i-1]+b[i]
print(a[i],end=' ')