P16758 [GKS 2020 #C] Candies
题目描述
Carl 有 $N$ 颗糖果组成的数组。数组的第 $i$ 个元素(下标从 $1$ 开始)为 $A_i$,表示第 $i$ 颗糖果的**甜度值**。他想执行一系列 $Q$ 个操作。操作有两种类型:
- 更新数组中某颗糖果的甜度值。
- 查询某个子数组的**甜度分数**。
从下标 $l$ 到 $r$ 的子数组的甜度分数定义为:
$A_l \times 1 - A_{l+1} \times 2 + A_{l+2} \times 3 - A_{l+3} \times 4 + A_{l+4} \times 5 \dots$
形式化地,甜度分数为 $\sum_{i=l}^{r} (-1)^{i-l} A_i \times (i - l + 1)$。
例如:
- $[3, 1, 6]$ 的甜度分数为 $3 \times 1 - 1 \times 2 + 6 \times 3 = 19$。
- $[40, 30, 20, 10]$ 的甜度分数为 $40 \times 1 - 30 \times 2 + 20 \times 3 - 10 \times 4 = 0$。
- $[2, 100]$ 的甜度分数为 $2 \times 1 - 100 \times 2 = -198$。
Carl 想求出所有查询操作的甜度分数之和。如果没有查询操作,则和为 $0$。你能帮助 Carl 求出这个和吗?
输入格式
输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。每个测试用例的第一行包含 $N$ 和 $Q$。第二行包含 $N$ 个整数描述数组,其中第 $i$ 个整数为 $A_i$。接下来的 $Q$ 行中的第 $j$ 行描述第 $j$ 个操作。每行以一个字符开头,表示操作类型(`U` 表示更新,`Q` 表示查询)。
- 对于更新操作,后面跟两个整数 $X_j$ 和 $V_j$,表示将数组的第 $X_j$ 个元素修改为 $V_j$。
- 对于查询操作,后面跟两个整数 $L_j$ 和 $R_j$,表示查询从第 $L_j$ 个元素到第 $R_j$ 个元素(包含两端)的子数组的甜度分数。
输出格式
对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是所有查询操作的甜度分数之和。
说明/提示
在样例 #1 中:
- 第一个查询询问子数组 $[3, 9, 8]$ 的甜度分数,计算为 $3 \times 1 - 9 \times 2 + 8 \times 3 = 9$。
- 第二个查询询问子数组 $[2]$ 的甜度分数,计算为 $2 \times 1 = 2$。
- 第三个查询询问子数组 $[1, 10]$ 的甜度分数,计算为 $1 \times 1 - 10 \times 2 = -19$。
因此最终输出为 $9 + 2 - 19 = -8$。
在样例 #2 中:
- 第一个(也是唯一一个)查询询问子数组 $[7, 5]$ 的甜度分数,计算为 $7 \times 1 - 5 \times 2 = -3$。
因此最终输出为 $-3$。
### 限制条件
$1 \le T \le 100$。
对于所有 $i$,$1 \le A_i \le 100$。
最多 $6$ 个测试用例满足 $1 \le N \le 2 \times 10^5$ 且 $1 \le Q \le 10^5$。
其余测试用例满足 $1 \le N \le 300$ 且 $1 \le Q \le 300$。
如果第 $j$ 个操作为更新操作,则 $1 \le X_j \le N$ 且 $1 \le V_j \le 100$。
如果第 $j$ 个操作为查询操作,则 $1 \le L_j \le R_j \le N$。
**测试集 1**
最多有 $5$ 个更新操作。
**测试集 2**
无特殊限制。
翻译由 DeepSeek V4 Pro 完成