#705. 寻找MEX

寻找MEX

题目描述

给你一个长度为 nn 的数组 aa 和一个数字 kk ,其中 0kn0 \le k \le n .

在一次操作中,你可以选择任意索引 ii ( 1in1 \le i \le n ),并将 aia_i 设置为范围 [0,n][0,n] 中的任意整数值 xx

求满足条件所需的最小运算次数: MEX(a)\operatorname{MEX}(a) =k=k

一组数 a1,a2,,ana_1,a_2,\dots,a_nMEXMEXaia_i 中没有出现的最小非负整数 xx

输入格式

每个测试都由多组输入数据组成。

  • 第一行包含一个整数 tt ( 1t1041 \le t \le 10^4 ) - 输入数据集的数量。各组输入数据的说明如下。

  • 每组输入数据的第一行包含两个整数 nnkk1n2105,0kn1 \le n \le 2 \cdot 10^5,\,\, 0 \le k \le n )分别表示数组的长度 aa 和所需的 MEX(a)\operatorname{MEX}(a)

  • 第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n ( 0ain0 \le a_i \le n ) 表示数组 aa 的元素。

保证所有输入数据中 nn 的值之和不超过 21052 \cdot 10^5

输出格式

对于每组输入数据,输出一个整数,表示满足条件 MEX(a)=k\operatorname{MEX}(a)=k 所需的最少操作数。

样例输入

5
1 0
0
3 1
0 2 3
5 5
0 1 2 3 4
6 2
0 3 4 2 6 2
7 4
0 1 5 4 4 7 3

样例输出

1
0
0
2
2

说明

样例解释

  • 在第一组输入数据中,数组为 a=[0]a=[0] ,因此为 MEX=1\operatorname{MEX}=1 。 去掉 0(用任意 x[1,n]x\in[1,n] 代替),得到 MEX=0\operatorname{MEX}=0 。 因此,只需进行一次运算。

  • 在第三组输入数据中,数组包含了所有的数字 0,1,2,3,40,1,2,3,4 ,因此从一开始就是 MEX(a)=5\operatorname{MEX}(a)=5 。由于这与所需的 kk 一致,因此无需进行任何更改,最小操作次数为 00