P16773 [GKS 2020 #G] Combination Lock
题目描述
一个密码锁有 $W$ 个拨轮,每个拨轮上按升序标有整数 $1$ 到 $N$。
在任意时刻,每个拨轮都会显示一个特定的数值。$X_i$ 是第 $i$ 个拨轮上显示的初始数值。
你可以通过一次操作将某个拨轮上显示的值从 $X$ 改为 $X+1$ 或 $X-1$,并在 $1$ 和 $N$ 之间循环。例如,如果一个拨轮当前显示 $1$,则一次操作可以将其变为 $2$ 或 $N$。
给定所有拨轮的初始值,要使所有拨轮显示相同的数值,最少需要多少次操作?
输入格式
输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。
每个测试用例的第一行包含两个整数 $W$ 和 $N$。
第二行包含 $W$ 个整数,其中第 $i$ 个整数是 $X_i$。
输出格式
对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是使所有拨轮显示相同数值所需的最少操作次数。
说明/提示
在样例 #1 中,最佳方案是让所有拨轮都显示数值 $3$,总操作次数为 $2$:第一个拨轮移动一次(从 $2$ 到 $3$),第二个拨轮不动(已经显示 $3$),第三个拨轮移动一次(从 $4$ 到 $3$)。
作为参考,让所有拨轮都显示 $1$ 需要 $5$ 次操作,显示 $2$ 需要 $3$ 次,显示 $4$ 需要 $3$ 次,显示 $5$ 需要 $5$ 次。
在样例 #2 中,最佳方案是让所有拨轮都显示 $1$、$2$、$9$ 或 $10$,总操作次数均为 $8$。
### 限制条件
$1 \le T \le 100$。
$1 \le X_i \le N$。
**测试集 1**
$1 \le W \le 1000$。
$2 \le N \le 1000$。
**测试集 2**
$1 \le W \le 1000$。
$2 \le N \le 10^9$。
**测试集 3**
$1 \le W \le 10^5$。
$2 \le N \le 10^9$。
翻译由 DeepSeek V4 Pro 完成