CF1497A Meximization

题目描述

给定一个整数 $n$ 和一个数组 $a_1, a_2, \ldots, a_n$。你需要重新排列数组 $a$ 的元素,使得所有前缀的 $\textbf{MEX}$ 之和最大。 形式化地,你需要找到一个数组 $b_1, b_2, \ldots, b_n$,使得数组 $a$ 和 $b$ 的元素集合相同(即 $b$ 可以通过重新排列 $a$ 得到),并且 $\sum\limits_{i=1}^{n} \textbf{MEX}(b_1, b_2, \ldots, b_i)$ 最大。 $\textbf{MEX}$ 是一组非负整数的最小非负整数,使得它不在该集合中。 例如,$\textbf{MEX}(\{1, 2, 3\}) = 0$,$\textbf{MEX}(\{0, 1, 2, 4, 5\}) = 3$。

输入格式

第一行包含一个整数 $t$ $(1 \le t \le 100)$,表示测试用例的数量。 每个测试用例的第一行包含一个整数 $n$ $(1 \le n \le 100)$。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$ $(0 \le a_i \le 100)$。

输出格式

对于每个测试用例,输出一行 $b_1, b_2, \ldots, b_n$,表示 $a_1, a_2, \ldots, a_n$ 的一种最优重排,使得所有前缀的 $\textbf{MEX}$ 之和最大。 如果有多种最优答案,可以输出任意一种。

说明/提示

在第一个测试用例中,答案的各前缀的 $\textbf{MEX}$ 分别为: 1. $\textbf{MEX}(\{0\}) = 1$ 2. $\textbf{MEX}(\{0, 1\}) = 2$ 3. $\textbf{MEX}(\{0, 1, 2\}) = 3$ 4. $\textbf{MEX}(\{0, 1, 2, 3\}) = 4$ 5. $\textbf{MEX}(\{0, 1, 2, 3, 4\}) = 5$ 6. $\textbf{MEX}(\{0, 1, 2, 3, 4, 7\}) = 5$ 7. $\textbf{MEX}(\{0, 1, 2, 3, 4, 7, 3\}) = 5$ $\textbf{MEX}$ 之和为 $1 + 2 + 3 + 4 + 5 + 5 + 5 = 25$。可以证明,这就是所有前缀 $\textbf{MEX}$ 之和的最大值。 由 ChatGPT 4.1 翻译