(int l, int r, int s, int e, int d)
| 79 | } |
| 80 | |
| 81 | public static void set(int l, int r, int s, int e, int d) { |
| 82 | // 为了防止x - 3 * v + 1出现负数下标,进而有很多很烦的边界讨论 |
| 83 | // 所以任何位置,都加上一个较大的数字(OFFSET) |
| 84 | // 这样一来,所有下标就都在0以上了,省去了大量边界讨论 |
| 85 | // 这就是为什么arr在初始化的时候要准备OFFSET + MAXN + OFFSET这么多的空间 |
| 86 | arr[l + OFFSET] += s; |
| 87 | arr[l + 1 + OFFSET] += d - s; |
| 88 | arr[r + 1 + OFFSET] -= d + e; |
| 89 | arr[r + 2 + OFFSET] += e; |
| 90 | } |
| 91 | |
| 92 | public static void build() { |
| 93 | for (int i = 1; i <= m + OFFSET; i++) { |