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 翻译