#P54. Yet Another MEX Problem

Yet Another MEX Problem

题目描述

我们定义一个由 mm 个非负整数组成的数组 bb 的“权值”为满足 bi>mex(b)b_i > \operatorname{mex}(b) 的下标 ii 的个数,这里 1im1\le i\le m。其中,mex(b)\operatorname{mex}(b) 表示集合 bb 的“最小未出现非负整数(MEX)^{\text{∗}}”。

现在,给定一个由 nn 个非负整数组成的数组 aa。对于其子数组^{\text{†}} [al,al+1,,ar][a_l, a_{l+1}, \ldots, a_r],我们记这个子数组的权值为 w(l,r)w(l,r)

对于每个 1in1\le i\le n,你需要找出所有以第 ii 个元素结尾的子数组中最大的权值。即,要求对于每个 1in1\le i\le n,计算 max1liw(l,i)\max\limits_{1\le l\le i} w(l, i)

^{\text{∗}} 集合 b=b1,b2,,bmb=b_1, b_2, \ldots, b_m 的最小未出现非负整数(MEX)定义为最小的在 bb 中没有出现的非负整数 xx

^{\text{†}} 如果数组 cc 可以通过从数组 aa 的开头和末尾各自删除若干(可以是零个,也可以是全部)元素得到,则 ccaa 的一个子数组。

输入格式

每组测试包含多组数据。第一行为测试用例组数 tt1t1041 \le t \le 10^4)。接下来是每组测试用例的描述。

每组测试用例的第一行是一个整数 nn1n31051\le n \le 3\cdot 10^5)——数组 aa 的长度。

第二行为 nn 个整数 a1,a2,,ana_1 , a_2 , \ldots , a_n0ain0\le a_i\le n)——数组 aa 的元素。

保证所有测试用例中 nn 的总和不超过 31053\cdot 10^5

输出格式

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

6
1
0
5
2 0 3 0 1
6
0 1 2 3 5 4
7
0 2 2 0 4 1 3
8
2 1 0 3 0 2 1 3
15
0 1 9 1 0 2 5 3 7 0 4 15 2 0 1
0 
1 1 2 2 1 
0 1 2 3 4 5 
0 1 2 2 3 2 3 
1 2 0 1 1 2 2 3 
0 1 2 3 1 1 2 3 4 4 5 6 7 7 3

解释 #1

在第一个测试用例中,有 w(1,1)=0w(1, 1) = 0,因为 mex([a1])=1\operatorname{mex}([a_1]) = 1,没有下标满足 ai>1a_i > 1

在第二个测试用例中,可以根据定义依次计算每个子数组 [l,r][l, r] 的权值:

  1. w(1,1)=1w(1,1)=1。因此,max1l1w(l,1)=1\max\limits_{1\le l\le 1}w(l,1) =1
  2. w(1,2)=1w(1,2)=1w(2,2)=0w(2,2)=0。因此,max1l2w(l,2)=1\max\limits_{1\le l\le 2}w(l,2) =1
  3. w(1,3)=2w(1,3)=2w(2,3)=w(3,3)=1w(2,3)=w(3,3)=1。因此,max1l3w(l,3)=2\max\limits_{1\le l\le 3}w(l,3) =2
  4. w(1,4)=2w(1,4)=2w(2,4)=w(3,4)=1w(2,4)=w(3,4)=1w(4,4)=0w(4,4)=0。因此,max1l4w(l,4)=2\max\limits_{1\le l\le 4}w(l,4) =2
  5. w(1,5)=0w(1,5)=0w(2,5)=w(3,5)=1w(2,5)=w(3,5)=1w(4,5)=0w(4,5)=0w(5,5)=1w(5,5)=1。因此,max1l5w(l,5)=1\max\limits_{1\le l\le 5}w(l,5) =1

比如,w(1,4)=2w(1, 4) = 2,因为 mex([a1,a2,a3,a4])=1\operatorname{mex}([a_1, a_2, a_3, a_4]) = 1,有两个下标满足 ai>1a_i>1,分别是 1133