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