Logo Wy Online Judge

WyOJ

时间限制:1 s 空间限制:1024 MB 控制组: group_default 压缩包大小: 1.011 MB
Statistics

题意

有一段楼梯,有 $n$ 个台阶,每个台阶的高度为 $h_i$。楼梯的均匀性定义为相邻台阶的高度差。如果所有相邻台阶的高度差都相同,那么这段楼梯就是均匀的。

例如,一段只有一个台阶的楼梯总是均匀的;两个台阶的楼梯也总是均匀的;高度序列为 $[2,11,20,29]$ 的楼梯是均匀的,因为相邻高度差均为 $9$;高度序列为 $[3,2,1,0]$ 的楼梯也是均匀的,因为相邻高度差均为 $-1$(即递减相同)。但是 $[1,0,1]$ 不是均匀的,因为相邻高度差分别为 $-1$ 和 $1$,不相同。

现在,你可以对每个台阶的高度进行最多一次调整:可以将该台阶的高度增加 $1$、减少 $1$ 或者不变。调整后,台阶的高度可以变为 $0$。

你的目标是使得调整后的楼梯变得均匀,即所有相邻台阶的高度差相同。请问最少需要调整多少个台阶?如果无法通过调整使得楼梯均匀,则输出 $-1$。 本题多测,每组数据有T个。

输入格式

第一行为数字T,表示数字组数。 接下来T组数据,每组两行。 第一行包含一个整数 $n$,表示台阶的数量。

第二行包含 $n$ 个整数 $h_1, h_2, \dots, h_n$,表示每个台阶的初始高度。

输出格式

输出 $T$ 行数据,对应每组数据。如果无法通过调整使得楼梯均匀,输出 $-1$。否则,输出一个非负整数,表示最少需要调整的台阶数。

输入 #1

3
4
24 21 14 10
2
500 500
3
14 5 1

输出 #1

3
0
-1

样例解释 #1

对于第一组数据,可以将第一个台阶增加 1,第二个台阶 减少 1,第三个台阶增加 1,第四个台阶不变。调整后的高度序列为 $[25,20,15,10]$,相邻高度差均为 $-5$,所以需要调整 3 个台阶。

对于第二组数据,已经是均匀的(高度差为 0),所以不需要调整。

对于第三组数据,无法通过最多调整每个台阶一次使得楼梯均匀。

注意:调整后高度可以为 0。

数据范围

$$ \begin{array}{|c|c|c|} \hline \textbf{Subtask} & T & n & h_i & \textbf{Score} \\ \hline 1 & 1 \le T \le 10 & 1 \le n \le 20 & 1 \le h_i \le 10^9 & 30 \\ \hline 2 & 1 \le T \le 10 & 1 \le n \le 10^5 & 1 \le h_i \le 10^9 & 70 \\ \hline \end{array} $$