CFCF2183B.Yet Another MEX Problem

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个长度为 nn 的数组 aa,以及一个整数 kk。令 f(l,r)f(l, r) 表示 mex(al,al+1,,ar)\operatorname{mex}(a_l,a_{l+1},\ldots,a_r) ^\text{∗} 的值。你需要进行如下操作 nk+1n-k+1 次:

  • 设当前序列长度为 a|a|。你需要找到一个长度为 kk 的区间 [l,r][l, r],使得 maxi=1ak+1f(i,i+k1)=f(l,r)\operatorname{max}_{i=1}^{|a|-k+1} f(i, i+k-1) = f(l, r)。换句话说,你需要在所有长度为 kk 的窗口中,选择一个 mex\operatorname{mex} 最大的窗口 [l,r][l, r]。如果有多个符合条件的区间 [l,r][l, r],可以任选其一。然后,你必须选择一个整数 ii,满足 lirl \leq i \leq r,并将 aia_iaa 中删除。也就是说,新的序列将变为 [a1,a2,,ai1,ai+1,ai+2,,an][a_1, a_2, \ldots, a_{i-1}, a_{i+1}, a_{i+2}, \ldots, a_n]

例如,对于数组 [1,2,0,1,3,0][1,2,0,1,3,0]k=3k=3,两个可能的 (l,r)(l,r) 对为 (1,3)(1,3)(2,4)(2,4)(因为这两个窗口的 mex\operatorname{mex} 都为 33,是所有长度为 33 的窗口中最大的)。因此,你可以在下一个步骤中删除下标 1,2,3,41,2,3,4 之中的任意一个。

经过 nk+1n-k+1 次操作后,你会得到一个长度为 k1k-1 的序列。你的目标是最大化剩余元素的 mex\operatorname{mex}。请输出可能获得的最大 mex\operatorname{mex}

^\text{∗} 一组整数 c1,c2,,ckc_1,c_2,\ldots,c_k 的 minimum excluded(MEX)定义为集合 cc 中未出现的最小非负整数 xx

输入格式

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

每组测试的第一行包含两个正整数 nnkk2kn21052\leq k \leq n \leq 2\cdot 10^5)。

第二行为 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ain0\leq a_i \leq n)。

保证所有测试用例的 nn 之和不超过 21052\cdot 10^5

输出格式

输出一个非负整数,表示答案。

输入输出样例

  • 输入#1

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

    输出#1

    1
    1
    2
    1
    4

说明/提示

在第一个测试用例中,我们可以选择区间 [1,3][1,3],然后删除 a2a_2 得到 [0,0][0,0]。此时操作结束,剩余元素的 mex\operatorname{mex}11

在第三个测试用例中,我们可以按如下操作:

  • 选择 i=1,j=3i=1,j=3。这是允许的,因为所有长度为 33 的窗口的 mex\operatorname{mex} 分别为 3,0,33,0,3,其中区间 [1,3][1,3]mex\operatorname{mex}33,为最大值。然后删去 a2a_2,序列变成 [0,2,1,0][0,2,1,0]
  • 选择 i=2,j=4i=2,j=4。删去 a2a_2,序列变为 [0,1,0][0,1,0]
  • 选择 i=1,j=3i=1,j=3。删去 a1a_1,序列变为 [1,0][1,0]。操作结束,最终 mex\operatorname{mex}22
首页