一、差分数组
例题
#若干测试数据
while True:
try:
n,m=map(int,input().split())
a=list(map(int,input().split()))
#差分数组
diff=[0]*(n+1)
diff[0]=a[0]
for i in range(1,n):#range(1,n)
diff[i]=a[i]-a[i-1]
#进行m次操作,每次对区间[x,y]加上z
for _ in range(m):
x,y,z=map(int,input().split())
x-=1
y-=1
diff[x]+=z
diff[y+1]-=z
#还原a
a[0]=diff[0] # a[0]=diff[0]
for i in range(1,n):#(1,n)
a[i]=diff[i]+a[i-1]
print(" ".join(map(str,a)))
except:
break
二、二维差分数组
def output(a,n):
for i in range(1,n+1):
print(" ".join(map(str,a[i][1:])))#a[i]
n,m=map(int,input().split())
a=[[0]*(m+1) for i in range(n+1)]#range(n+1)
diff=[[0]*(m+1) for i in range(n+1)]#range(n+1)
for i in range(1,n+1):
a[i]=[0]+list(map(int,input().split()))
for i in range(1,n+1):#range(n+1)
for j in range(1,m+1):#range(m+1)
diff[i][j]=a[i][j]-a[i-1][j]-a[i][j-1]+a[i-1][j-1]
output(diff,n)