P14130 【MX-X22-T1】「TPOI-4A」MEX Problem
题目描述
给定长度为 $n$ 的非负整数序列 $a_1, \ldots, a_n$。
你需要将这个序列划分为尽可能多个**子序列**,使得:
- 每个子序列至少包含一个元素;
- 每个元素被划分进了恰好一个子序列;
- 每个子序列的 $\operatorname*{mex}$ 都不为 $0$。
设子序列个数为 $k$,你只需要求出满足条件的 $k$ 的最大可能值。如果不存在满足条件的 $k$,输出 $0$。
**子序列的定义**:从原序列中选取一部分元素,不改变它们在原序列中的相对顺序,得到的新序列。
**非负整数序列的 $\textbf{mex}$ 的定义**:该序列中没有出现过的最小非负整数。例如:
- $[1, 2, 1]$ 的 $\operatorname*{mex}$ 为 $0$;
- $[3, 0, 4]$ 的 $\operatorname*{mex}$ 为 $1$;
- $[7, 1, 0, 1]$ 的 $\operatorname*{mex}$ 为 $2$。
输入格式
第一行,一个正整数 $n$,表示序列长度。
第二行,$n$ 个非负整数 $a_1, \ldots, a_n$。
输出格式
输出一行,一个非负整数,表示 $k$ 的最大可能值。如果不存在满足条件的 $k$,输出 $0$。
说明/提示
**【样例解释 #1】**
序列为 $a = [1, 0, 4, 1, 0]$。
将 $a_1, a_4, a_5$ 划分进第一个子序列,$a_2, a_3$ 划分进第二个子序列,此时:
- 第一个子序列为 $[1, 1, 0]$,$\operatorname*{mex}$ 为 $2$;
- 第二个子序列为 $[0, 4]$,$\operatorname*{mex}$ 为 $1$。
该划分方案满足条件,且有 $k = 2$。
可以证明不存在划分为更多子序列的方案。
**【数据范围】**
| 测试点编号 | $n \le$ | 特殊性质 |
| :----------: | :----------: | :----------: |
| $1,2$ | $10^5$ | A |
| $3,4$ | $5$ | 无 |
| $5\sim 10$ | $10^5$ | ^ |
- 特殊性质 A:保证序列 $a$ 不含 $0$。
对于所有数据,保证 $1 \le n \le 10^5$,$0 \le a_i \le 10^9$。