题解 | 【模板】差分
【模板】差分
https://www.nowcoder.com/practice/4bbc401a5df140309edd6f14debdba42
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(), m =in.nextInt();
long [] a = new long[n];
long []dp = new long[n];
for(int i=0;i<n;++i){
a[i] = in.nextLong();
}
for(int i=0;i<m;++i){
int l=in.nextInt()-1, r=in.nextInt()-1;
long k=in.nextLong();
dp[l] += k;// 差分 =》 下面2个操作后再做前缀和,相当于让[l,r]区间内每个数都加上了k
if(r>=n-1)// 最后一个数,没有更后面的数需要操作的了
continue;
dp[r+1] -= k;
}
for(int i=1;i<n;++i){
dp[i] += dp[i-1];
}
for(int i=0;i<n-1;++i){
System.out.print(a[i]+dp[i]+" ");
}
System.out.print(a[n-1]+dp[n-1]);
}
}
查看13道真题和解析
