(1) 一维差分
for (i=1; i<=n; i++) {
scanf("%d", &data[i]);
diff[i] = data[i] - data[i-1];
}
for (i=0; i<m; i++) {
int l, r, c;
scanf("%d%d%d", &l, &r, &c);
diff[l] += c;
diff[r+1] -= c;
}
//输出
int ans=diff[0];
for (i=1; i<=n; i++) {
ans += diff[i];
printf("%d ", ans);
}
printf("\n");
(2) 二维差分
for (i=1; i<=n; i++) {
for (j=1; j<=m; j++) {
scanf("%d", &a[i][j]);
diff[i][j] = a[i][j]-a[i-1][j]-a[i][j-1]+a[i-1][j-1];
}
}
for (i=0; i<q; i++) {
int x1, y1, x2, y2, c;
scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &c);
diff[x1][y1] += c;
diff[x1][y2+1] -=c;
diff[x2+1][y1] -=c;
diff[x2+1][y2+1] += c;
}
for (i=1; i<=n; i++) {
for (j=1; j<=m; j++) {
diff[i][j] += diff[i-1][j]+diff[i][j-1]-diff[i-1][j-1];
printf("%d ", diff[i][j]);
}