题解 | 【模板】差分
【模板】差分
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]); } }