CF1619E MEX and Increments

题目描述

Dmitry 有一个包含 $n$ 个非负整数的数组 $a_1, a_2, \dots, a_n$。 在一次操作中,Dmitry 可以选择任意一个下标 $j$($1 \le j \le n$),并将 $a_j$ 的值加 $1$。他可以多次选择同一个下标 $j$。 对于每个 $i$ 从 $0$ 到 $n$,判断 Dmitry 是否可以通过若干次操作使得数组的 $\mathrm{MEX}$ 恰好等于 $i$。如果可以,请输出最少需要多少次操作。 数组的 $\mathrm{MEX}$ 定义为数组中未出现的最小非负整数。例如,数组 $[3, 1, 0]$ 的 $\mathrm{MEX}$ 等于 $2$,数组 $[3, 3, 1, 4]$ 的 $\mathrm{MEX}$ 等于 $0$。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 2 \times 10^5$),表示数组 $a$ 的长度。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le n$),表示数组 $a$ 的元素。 保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,输出 $n+1$ 个整数,第 $i$ 个数表示将数组的 $\mathrm{MEX}$ 变为 $i$ 所需的最小操作次数($0 \le i \le n$),如果无法实现则输出 $-1$。

说明/提示

在第一个示例输入中,$n=3$: - 要得到 $\mathrm{MEX}=0$,只需对 $a_1$ 执行一次加一操作; - 要得到 $\mathrm{MEX}=1$,只需对 $a_2$ 执行一次加一操作; - 给定数组的 $\mathrm{MEX}=2$,因此不需要进行任何操作; - 无法通过加一操作得到 $\mathrm{MEX}=3$。 由 ChatGPT 4.1 翻译