CF2021B Maximize Mex
题目描述
给定一个长度为 $n$ 的正整数数组 $a$ 和一个整数 $x$。你可以进行如下的两步操作任意次(可能为零次):
1. 选择一个下标 $i$($1 \leq i \leq n$)。
2. 将 $a_i$ 增加 $x$,即 $a_i := a_i + x$。
请你在最优操作下,求出数组 $a$ 的最大 $\operatorname{MEX}$ 值。
数组的 $\operatorname{MEX}$(最小未出现值)是指不在数组中的最小非负整数。例如:
- $[2,2,1]$ 的 $\operatorname{MEX}$ 是 $0$,因为 $0$ 不在数组中。
- $[3,1,0,1]$ 的 $\operatorname{MEX}$ 是 $2$,因为 $0$ 和 $1$ 在数组中,但 $2$ 不在数组中。
- $[0,3,1,2]$ 的 $\operatorname{MEX}$ 是 $4$,因为 $0$、$1$、$2$ 和 $3$ 都在数组中,但 $4$ 不在数组中。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 5000$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ 和 $x$($1 \leq n \leq 2 \cdot 10^5$,$1 \leq x \leq 10^9$),分别表示数组的长度和操作中使用的整数。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq 10^9$),表示给定的数组。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示在最优操作下数组 $a$ 的最大 $\operatorname{MEX}$。
说明/提示
在第一个测试用例中,不进行任何操作时,$a$ 的 $\operatorname{MEX}$ 就是 $4$,这已经是最大值。
在第二个测试用例中,不进行任何操作时,$a$ 的 $\operatorname{MEX}$ 是 $5$。如果我们对 $i=1$ 进行两次操作,数组变为 $a=[5,3,4,1,0,2]$,此时 $\operatorname{MEX}$ 变为 $6$,这是最大值。
在第三个测试用例中,不进行任何操作时,$a$ 的 $\operatorname{MEX}$ 就是 $0$,这已经是最大值。
由 ChatGPT 4.1 翻译