P12660 [KOI 2023 Round 1] 积木堆叠
题目背景
试题来源:。中文翻译做了少量本土化修改。
按照[署名—非商业性使用—相同方式共享 4.0 协议国际版](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)进行授权。
题目描述
正在进行一项积木堆叠的游戏。共有 $N$ 个可以向上堆积积木的位置,从第 $1$ 个格子到第 $N$ 个格子依次排列。
当前第 $i$ 个格子上堆积了 $A_i$ 个积木。由于当前堆积的形状杂乱无章,想要通过以下条件将其整理:
- 每个格子上的积木数量要在 $L$ 到 $R$ 之间(包括 $L$ 和 $R$)。
- 每个格子上的积木数量要单调不减:对于 $1 \leq i \leq N - 1$,第 $i$ 个格子上的积木数量不应大于第 $i + 1$ 个格子的数量。
你可以将某个格子上的积木移动到相邻的格子中,反复进行操作以达成目标。现在需要判断是否可以实现目标。如果可以,还要输出最小的移动次数。
输入格式
第一行包含三个整数 $N$、$L$、$R$,以空格分隔。
第二行包含 $N$ 个整数 $A_1, A_2, \dots, A_N$,表示每个格子当前的积木数量。
输出格式
若无法达成目标,输出 $-1$。若可以达成目标,输出最小的积木移动次数。
说明/提示
**限制条件**
- $1 \leq N \leq 100$
- $0 \leq L \leq R \leq 10^9$
- $R - L \leq 100$
- $0 \leq A_i \leq 10^9 \quad (1 \leq i \leq N)$
- 所有输入的数值均为整数。
**子问题**
1. (7 分)$N \leq 50$, $R - L \leq 1$
2. (6 分)$N \leq 4$, $R - L \leq 50$
3. (11 分)$N \leq 10$, $\sum A_i \leq 10$
4. (11 分)$N \leq 50$, $\sum A_i \leq 50$
5. (30 分)$N \leq 50$, $R \leq 50$
6. (10 分)$N \leq 50$, $R - L \leq 50$
7. (25 分)无额外限制