AT_agc071_d [AGC071D] Level K Terms

题目描述

[problemUrl]: https://atcoder.jp/contests/agc071/tasks/agc071_d 给定整数 $N, K$ 和长度为 $N$ 的非负整数序列 $A = (A_1, A_2, \dots, A_N)$。 $A$ 是单调非递减序列,即对于所有 $i = 1, 2, \dots, N-1$,满足 $A_i \leq A_{i+1}$。 对于一个长度为 $N$ 的单调非递减非负整数序列 $X = (X_1, X_2, \dots, X_N)$,如果可以通过以下操作(进行 $0$ 次或多次)使得 $X$ 的所有项变为 $0$,则称 $X$ 为「好序列」: - 选择满足 $1 \leq i \leq N-K+1$ 的整数 $i$,令 $S = X_i + X_{i+1} + \dots + X_{i+K-1}$,将 $X$ 的第 $i, i+1, \dots, i+K-1$ 项的值全部替换为 $\left\lfloor \frac{S}{K} \right\rfloor$。 请找出满足以下所有条件的非负整数序列 $B = (B_1, B_2, \dots, B_N)$ 的 $\sum_{i=1}^N B_i$ 的最大值: - 对于所有 $i = 1, 2, \dots, N$,有 $B_i \leq A_i$; - $B$ 是单调非递减序列且是「好序列」。 给定 $T$ 个测试用例,请对每个用例输出答案。

输入格式

输入从标准输入按以下格式给出: > $T$ > $\mathrm{case}_1$ > $\vdots$ > $\mathrm{case}_T$ 每个测试用例的格式如下: > $N$ $K$ > $A_1$ $A_2$ $\dots$ $A_N$

输出格式

输出 $T$ 行。第 $i$ 行对应第 $i$ 个测试用例的答案。

说明/提示

### 约束条件 - $1 \leq T \leq 10^5$ - $2 \leq K \leq N \leq 2 \times 10^5$ - $0 \leq A_i \leq 10^9$ - 对于所有 $i = 1, 2, \dots, N-1$,有 $A_i \leq A_{i+1}$ - 输入中的所有值均为整数 - 单个输入文件中所有测试用例的 $N$ 总和不超过 $2 \times 10^5$ ### 样例解释 #1 对于第一个测试用例,$A$ 本身是「好序列」。例如,通过以下步骤可将所有项变为 $0$: 1. 选择 $i=3$,计算 $S = A_3 + A_4 = 5$,将第 $3, 4$ 项替换为 $\left\lfloor \frac{5}{2} \right\rfloor = 2$,得到 $A = (0, 1, 2, 2)$。 2. 选择 $i=2$,计算 $S = A_2 + A_3 = 3$,将第 $2, 3$ 项替换为 $\left\lfloor \frac{3}{2} \right\rfloor = 1$,得到 $A = (0, 1, 1, 2)$。 3. 选择 $i=3$,计算 $S = A_3 + A_4 = 3$,将第 $3, 4$ 项替换为 $\left\lfloor \frac{3}{2} \right\rfloor = 1$,得到 $A = (0, 1, 1, 1)$。 4. 选择 $i=1$,计算 $S = A_1 + A_2 = 1$,将第 $1, 2$ 项替换为 $\left\lfloor \frac{1}{2} \right\rfloor = 0$,得到 $A = (0, 0, 1, 1)$。 5. 选择 $i=2$,计算 $S = A_2 + A_3 = 1$,将第 $2, 3$ 项替换为 $\left\lfloor \frac{1}{2} \right\rfloor = 0$,得到 $A = (0, 0, 0, 1)$。 6. 选择 $i=3$,计算 $S = A_3 + A_4 = 1$,将第 $3, 4$ 项替换为 $\left\lfloor \frac{1}{2} \right\rfloor = 0$,得到 $A = (0, 0, 0, 0)$。 因此,取 $B = A$ 可得到最大值 $0 + 1 + 2 + 3 = 6$。 对于第二个测试用例,$A$ 不是「好序列」。取 $B = (0, 0, 2, 3)$ 时 $B$ 是「好序列」且满足条件。 翻译由 DeepSeek R1 完成