E. MEX 计数
时间限制:3 秒
内存限制:256 兆字节
定义一个数组的 MEX(最小排除值)为不在数组中的最小非负整数。例如:
- MEX([2,2,1])=0,因为 0 不在数组中。
- MEX([3,1,0,1])=2,因为 0 和 1 在数组中,但 2 不在。
- MEX([0,3,1,2])=4,因为 0,1,2,3 都在数组中,但 4 不在。
给定一个大小为 n 的非负整数数组 a。
对于每个 k(0≤k≤n),统计从 a 中恰好移除 k 个值后,得到的数组的 MEX 可能取值的个数。
输入
第一行包含一个整数 t(1≤t≤104)—— 测试用例数。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105)—— 数组 a 的大小。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤n)。
保证所有测试用例的 n 之和不超过 2⋅105。
输出
对于每个测试用例,输出一行,包含 n+1 个整数,分别对应 k=0,1,…,n 时,可能得到的 MEX 值的个数。
样例
输入
5
5
1 0 0 1 2
6
3 2 0 4 5 1
6
1 2 0 1 3 2
4
0 3 4 1
5
0 0 0 0 0
输出
1 2 4 3 2 1
1 6 5 4 3 2 1
1 3 5 4 3 2 1
1 3 3 2 1
1 1 1 1 1 1
说明
第一个样例中,考虑 k=1:
- 若移除一个 0,得到数组 [1,0,1,2],MEX=3。
- 若移除 2,得到数组 [1,0,0,1],MEX=2。
可以证明这是移除恰好一个值后仅有的两种 MEX 取值,因此输出 2。