CF2262A1 Floor of MEX (Easy Version)
题目描述
**这是该题目的简单版本。不同之处在于,本版本中你只需要找到一个满足约束条件的子集即可。只有当你解决了所有版本的问题后,才能进行 hack。**
定义
$$f(S,x)=\text{mex}\left(\left\{\left\lfloor \frac{y}{x}\right\rfloor : y\in S\right\}\right), $$
其中 $S$ 是一个非负整数集合,$x$ 是一个正整数。$^{\text{∗}}$
Farmer John 选择 $\{0,1,\ldots,n-1\}$ 的一个(可能为空)子集 $A$。他随后构造一个长度为 $n$ 的数组 $a$,其中对于每个 $1\le k\le n$,有 $a_k = f(A,k)$。
Bessie 是一头调皮的奶牛,她把集合 $A$ 藏了起来。Farmer John 只能得到数组 $a_1,a_2,\ldots,a_n$。
你的任务是构造任意一个(可能为空)子集 $B\subseteq \{0,1,\ldots,n-1\}$,使得对于每个 $1 \le k \le n$,有 $f(B,k)=a_k$。保证输入的数组都存在满足条件的 $B$。
$^{\text{∗}}$ 其中 $\operatorname{mex}(c)$ 表示集合 $c$ 的最小未出现元素(Minimum Excluded Value, MEX)。在本题中,即集合中未出现的最小非负整数。
输入格式
每个测试点包含多组测试用例。第一行包含整数 $t$($1 \le t \le 10^4$),表示测试用例数。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 10^5$)。
第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($0 \leq a_i \leq n$)。
保证一定存在一个 $B \subseteq \{0,1,\ldots,n-1\}$,使得对每个 $1 \le k \le n$,都有 $f(B,k)=a_k$。
所有测试用例中 $n$ 的总和不超过 $10^5$。
输出格式
对于每组测试用例,输出两行。
第一行输出一个整数 $m$,表示集合 $B$ 的大小。
第二行输出 $m$ 个互不相同的整数 $b_1,b_2,\ldots,b_m$,表示 $B$ 的所有元素。如果 $m=0$,则第二行输出为空。
$B$ 中的元素可以按任意顺序输出。
如果有多个解,你可以输出任意一个。
说明/提示
对于第一个测试用例,其中一个可能的答案是
$$B=\{1,2,3,4,5\}。$$
则
$$f(B,1)=\text{mex}(\{1,2,3,4,5\})=0,$$
$$f(B,2)=\text{mex}(\{0,1,2\})=3,$$
且
$$f(B,3)=f(B,4)=f(B,5)=2。$$
最后,
$$f(B,6)=\text{mex}(\{0\})=1。$$
因此,数组为 $[0,3,2,2,2,1]$。
对于第二个测试用例,其中一个可能的答案是 $B=\{0,1\}$。
此时 $f(B,1)=2$,并且对于每个 $2\le k\le 5$,都有
$$\left\{\left\lfloor y/k\right\rfloor : y\in B\right\}=\{0\},$$
所以 $f(B,k)=1$。因此,数组为 $[2,1,1,1,1]$。
由 ChatGPT 5 翻译