T841033 漏水检修(repair)
题目描述
一条笔直的水管上出现了 $n$ 处漏水点。以检修站为原点,第 $i$ 处漏水点的坐标为 $x_i$。坐标可以为负数,所有漏水点的位置互不相同,且都不在检修站。
从时刻 $0$ 开始,每处尚未修好的漏水点每经过 $1$ 单位时间就漏出 $1$ 单位水。所有漏水点同时漏水。
检修员在时刻 $0$ 从坐标 $0$ 出发。他可以沿水管向任意方向移动,移动 $1$ 单位距离需要 $1$ 单位时间,也可以随时改变方向。检修员到达一处漏水点后,可以立即将它修好,修理不需要时间;修好后,这处漏水点不再漏水。
请安排检修员的移动路线,在修好全部漏水点的前提下,使总漏水量最少,并求出这个最小值。修完后不需要回到检修站。
输入格式
第一行包含一个整数 $T$,表示数据组数。接下来依次给出每组数据:
第一行包含一个整数 $n$,表示漏水点数量。
接下来 $n$ 行,每行包含一个整数 $x_i$,表示一处漏水点的坐标。
输出格式
对每组数据输出一行一个整数,表示最少的总漏水量。
说明/提示
可以依次修理坐标为 $-2,3,7,-12$ 的漏水点。
- 从 $0$ 移动到 $-2$,用时 $2$,在时刻 $2$ 修好第一处漏水点。
- 从 $-2$ 移动到 $3$,再用时 $5$,在时刻 $7$ 修好第二处漏水点。
- 从 $3$ 移动到 $7$,再用时 $4$,在时刻 $11$ 修好第三处漏水点。
- 从 $7$ 移动到 $-12$,再用时 $19$,在时刻 $30$ 修好最后一处漏水点。
这四处漏水点分别漏出 $2,7,11,30$ 单位水,总漏水量为 $2+7+11+30=50$。不存在总漏水量更少的路线。
## 样例 2
见 `考生目录/repair/repair2.in` 与 `考生目录/repair/repair2.ans`。该样例满足测试点 $1\sim4$ 的约束。
## 样例 3
见 `考生目录/repair/repair3.in` 与 `考生目录/repair/repair3.ans`。该样例满足测试点 $5\sim8$ 的约束。
## 样例 4
见 `考生目录/repair/repair4.in` 与 `考生目录/repair/repair4.ans`。该样例满足测试点 $5\sim8$ 的约束。
## 样例 5
见 `考生目录/repair/repair5.in` 与 `考生目录/repair/repair5.ans`。该样例满足测试点 $9\sim12$ 的约束。
## 样例 6
见 `考生目录/repair/repair6.in` 与 `考生目录/repair/repair6.ans`。该样例满足测试点 $13\sim20$ 的约束。
## 样例 7
见 `考生目录/repair/repair7.in` 与 `考生目录/repair/repair7.ans`。该样例满足测试点 $13\sim20$ 的约束。
## 数据范围
对于所有数据,保证:
- $1\le T\le10$;
- 每组数据中,$1\le n\le1000$,$-5\times10^5\le x_i\le5\times10^5$,$x_i\ne0$;
- 每组数据中的所有 $x_i$ 互不相同;
- 同一个输入文件中,所有数据的 $n$ 之和不超过 $2000$;
- 所有输入均为整数。
| 测试点编号 | 附加限制(每组均满足) |
| :--------: | :-----------------------------: |
| $1\sim4$ | $n\le9$ |
| $5\sim8$ | 所有 $x_i$ 均为正数,或均为负数 |
| $9\sim12$ | $n\le20$ |
| $13\sim20$ | 无 |