CF1406A Subset Mex

题目描述

给定一个整数集合(集合中可以包含相同的元素)。 你需要将其分成两个子集 $A$ 和 $B$(它们都可以包含相同的元素,也可以为空)。你需要最大化 $mex(A)+mex(B)$ 的值。 这里,集合的 $mex$ 表示集合中不存在的最小非负整数。例如: - $mex(\{1,4,0,2,2,1\})=3$ - $mex(\{3,3,2,1,3,0,0\})=4$ - $mex(\varnothing)=0$(空集的 $mex$) 如果对于任意整数 $x$,该整数在原集合中出现的次数等于其在 $A$ 和 $B$ 中出现次数之和,则称原集合被分成了两个子集 $A$ 和 $B$。

输入格式

输入包含多组测试数据。第一行包含一个整数 $t$($1\leq t\leq 100$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1\leq n\leq 100$),表示集合的大小。 每个测试用例的第二行包含 $n$ 个整数 $a_1,a_2,\dots,a_n$($0\leq a_i\leq 100$),表示集合中的元素。

输出格式

对于每个测试用例,输出 $mex(A)+mex(B)$ 的最大值。

说明/提示

在第一个测试用例中,$A=\{0,1,2\},B=\{0,1,5\}$ 是一种可能的划分方式。 在第二个测试用例中,$A=\{0,1,2\},B=\varnothing$ 是一种可能的划分方式。 在第三个测试用例中,$A=\{0,1,2\},B=\{0\}$ 是一种可能的划分方式。 在第四个测试用例中,$A=\{1,3,5\},B=\{2,4,6\}$ 是一种可能的划分方式。 由 ChatGPT 4.1 翻译