CF1651C Fault-tolerant Network
题目描述
有一个教室里有两排电脑。每排有 $n$ 台电脑,每台电脑都有自己的评分。第一排电脑的评分为 $a_1, a_2, \dots, a_n$,第二排电脑的评分为 $b_1, b_2, \dots, b_n$。
最初,每一排中所有相邻的电脑对都通过电线连接(即所有 $1 \le i < n$ 的 $(i, i+1)$ 对),因此两排各自形成了两个独立的计算机网络。
你的任务是通过连接一对或多对来自不同排的电脑,将它们合并成一个共同的网络。连接第一排的第 $i$ 台电脑和第二排的第 $j$ 台电脑的费用为 $|a_i - b_j|$。
你可以让一台电脑连接多台其他电脑,但你需要至少提供基本的容错能力:你需要以这样的方式连接电脑,使得即使有一台电脑损坏(无论是哪一台),网络也不会被分成两部分或更多部分。
请问,构建一个容错网络的最小总费用是多少?
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来有 $t$ 组测试数据。
每组测试数据的第一行包含一个整数 $n$($3 \le n \le 2 \cdot 10^5$),表示每排电脑的数量。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$),表示第一排电脑的评分。
第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($1 \le b_i \le 10^9$),表示第二排电脑的评分。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示构建容错网络的最小总费用。
说明/提示
在第一个测试用例中,最优的做法是连接四对电脑:
1. 第一排的第 $1$ 台电脑与第二排的第 $2$ 台电脑相连:费用为 $|1 - 4| = 3$;
2. 第一排的第 $3$ 台电脑与第二排的第 $2$ 台电脑相连:费用为 $|1 - 4| = 3$;
3. 第一排的第 $2$ 台电脑与第二排的第 $1$ 台电脑相连:费用为 $|10 - 20| = 10$;
4. 第一排的第 $2$ 台电脑与第二排的第 $3$ 台电脑相连:费用为 $|10 - 25| = 15$;
总费用为 $3 + 3 + 10 + 15 = 31$。在第二个测试用例中,最优做法是将第一排的第 $1$ 台电脑与第二排的第 $1$ 台电脑相连,将第一排的第 $4$ 台电脑与第二排的第 $4$ 台电脑相连。
由 ChatGPT 4.1 翻译