CF2146E Yet Another MEX Problem

题目描述

我们定义一个由 $m$ 个非负整数组成的数组 $b$ 的“权值”为满足 $b_i > \operatorname{mex}(b)$ 的下标 $i$ 的个数,这里 $1\le i\le m$。其中,$\operatorname{mex}(b)$ 表示集合 $b$ 的“最小未出现非负整数(MEX)$^{\text{∗}}$”。 现在,给定一个由 $n$ 个非负整数组成的数组 $a$。对于其子数组$^{\text{†}}$ $[a_l, a_{l+1}, \ldots, a_r]$,我们记这个子数组的权值为 $w(l,r)$。 对于每个 $1\le i\le n$,你需要找出所有以第 $i$ 个元素结尾的子数组中最大的权值。即,要求对于每个 $1\le i\le n$,计算 $\max\limits_{1\le l\le i} w(l, i)$。 $^{\text{∗}}$ 集合 $b=b_1, b_2, \ldots, b_m$ 的最小未出现非负整数(MEX)定义为最小的在 $b$ 中没有出现的非负整数 $x$。 $^{\text{†}}$ 如果数组 $c$ 可以通过从数组 $a$ 的开头和末尾各自删除若干(可以是零个,也可以是全部)元素得到,则 $c$ 是 $a$ 的一个子数组。

输入格式

每组测试包含多组数据。第一行为测试用例组数 $t$($1 \le t \le 10^4$)。接下来是每组测试用例的描述。 每组测试用例的第一行是一个整数 $n$($1\le n \le 3\cdot 10^5$)——数组 $a$ 的长度。 第二行为 $n$ 个整数 $a_1 , a_2 , \ldots , a_n$($0\le a_i\le n$)——数组 $a$ 的元素。 保证所有测试用例中 $n$ 的总和不超过 $3\cdot 10^5$。

输出格式

对于每组测试用例,输出 $n$ 个整数,第 $i$ 个整数表示所有以第 $i$ 个元素结尾的 $a$ 的子数组中的最大权值,即 $\max\limits_{1\le l\le i}w(l,i)$。

说明/提示

在第一个测试用例中,有 $w(1, 1) = 0$,因为 $\operatorname{mex}([a_1]) = 1$,没有下标满足 $a_i > 1$。 在第二个测试用例中,可以根据定义依次计算每个子数组 $[l, r]$ 的权值: 1. $w(1,1)=1$。因此,$\max\limits_{1\le l\le 1}w(l,1) =1$; 2. $w(1,2)=1$ 且 $w(2,2)=0$。因此,$\max\limits_{1\le l\le 2}w(l,2) =1$; 3. $w(1,3)=2$,$w(2,3)=w(3,3)=1$。因此,$\max\limits_{1\le l\le 3}w(l,3) =2$; 4. $w(1,4)=2$,$w(2,4)=w(3,4)=1$,$w(4,4)=0$。因此,$\max\limits_{1\le l\le 4}w(l,4) =2$; 5. $w(1,5)=0$,$w(2,5)=w(3,5)=1$,$w(4,5)=0$,$w(5,5)=1$。因此,$\max\limits_{1\le l\le 5}w(l,5) =1$。 比如,$w(1, 4) = 2$,因为 $\operatorname{mex}([a_1, a_2, a_3, a_4]) = 1$,有两个下标满足 $a_i>1$,分别是 $1$ 和 $3$。 由 ChatGPT 5 翻译