#差分
差分和前缀和互为逆运算:
差分的用途:
#一维差分
##实战演练


//c++代码示例
#include <iostream>
using namespace std ;
const int N = 100001 ;
int n,m ;
int s[N],h[N] ;
void add(int c,int l,int r)
{
h[l] += c ;
h[r+1] -= c ;
}
//示例1
int main()
{
scanf("%d%d",n,m) ;
for (int i = 1 ; i <= n ; i++)
{
scanf("%d",&s[i]) ;
}
for (int i = 1 ; i<= n ; i++)
{
add(s[i],i,i) ;
}
while (m--)
{
int l,r,c ;
scanf("%d%d%",&l,&r,&c) ;
add(c,l,r) ;
}
for (int i = 1 ; i<= n ; i++)
{
h[i] += h[i-1] ;
printf("%d ",h[i]) ;
}
return 0 ;
}
//示例2
int main()
{
cin >> n >> m ;
for (int i = 1 ; i<=n ; i++)
{
cin >> s[i] ;
h[i] = h[i] - h[i-1] ;
}
while (m--)
{
int l,r,c ;
cin >> l >> r >> c ;
h[l] += c ;
h[r+1} -= c ;
}
for (int i = 1 ; i <= n ; i++)
{
h[i] = h[i] + h[i - 1] ;
cout << h[i] << " " ;
}
return 0 ;
}
//python代码示例
n,m = map(int,input().split())
s = [map(int,input().split())]
h = [0] * (len(s))
h[0] = s[0]
for i in range(1,n):
h[i] = h[i] - h[i-1]
for _ in range(m):
l,r,c = map(int,input().split())
h[l] += c
h[r+1] -= c
for i in range(1,n):
h[i] = h[i] + h[i - 1]
print(h[i],end = " ")
#二维差分
##实战演练

##代码示例
#总结