// 定义一个差分的diff数组,多加一位可以避免考虑r+1是否超出索引
long[] diff = new long[n+1];
for (int i = 0;i < q;i++) {
int l = sc.nextInt()-1;
int r = sc.nextInt()-1;
int x = sc.nextInt();
diff[l] += x;
diff[r+1] -= x;
}
// 差分的另外一种用法,用于求差分数组
for (int i = 0;i < n;i++) a[i] -= a[i-1];
// 前缀和操作还原原数组
for (int i = 1;i < n;i++) {
diff[i] += diff[i-1];
}
差分(java)
于 2024-03-04 10:34:32 首次发布