CF2085B.Serval and Final MEX

普及-

通过率:0%

AC君温馨提醒

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

题目描述

给定一个由 n≥4n \ge 4 个非负整数组成的数组 aa。

你需要对 aa 执行以下操作,直到其长度变为 11:

  • 选择两个下标 ll 和 rr(1≤l<r≤∣a∣1 \le {\color{red}{ l < r }} \le |a|),将子数组 [al,al+1,…,ar][a_l, a_{l+1}, \ldots, a_r] 替换为一个整数 mex⁡([al,al+1,…,ar])\operatorname{mex}([a_l, a_{l+1}, \ldots, a_r])。其中 mex⁡(b)\operatorname{mex}(b) 表示整数集合 bb 的最小未出现值(MEX)∗^{\text{∗}}。具体来说,令 x=mex⁡([al,al+1,…,ar])x = \operatorname{mex}([a_l, a_{l+1}, \ldots, a_r]),数组 aa 将变为 [a1,a2,…,al−1,x,ar+1,ar+2,…,a∣a∣][a_1, a_2, \ldots, a_{l-1}, x, a_{r+1}, a_{r+2}, \ldots, a_{|a|}]。注意此操作后 aa 的长度将减少 (r−l)(r - l)。

Serval 希望最终 aa 中的唯一元素为 00。请帮助他完成这一目标!

更正式地说,你需要找到一个操作序列,使得按顺序执行这些操作后,数组 aa 的长度变为 11,且该元素为 00。

可以证明,在题目约束下至少存在一个有效的操作序列,且任何有效操作序列的长度不超过 nn。

注意:你不需要最小化操作次数。

∗^{\text{∗}}整数集合 b1,b2,…,bkb_1, b_2, \ldots, b_k 的最小未出现值(MEX)定义为不包含在该集合中的最小非负整数 xx。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数 tt(1≤t≤10001 \le t \le 1000)。接下来描述每个测试用例。

每个测试用例的第一行包含一个整数 nn(4≤n≤50004 \le n \le 5000)——数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤n0 \le a_i \le n)——数组 aa 的元素。

保证所有测试用例的 nn 之和不超过 50005000。

输出格式

对于每个测试用例:

  • 第一行输出一个整数 kk(0≤k≤n0 \le k \le n)——操作序列的长度。
  • 随后输出 kk 行,第 ii 行包含两个整数 lil_i 和 rir_i(1≤li<ri≤∣a∣1 \le l_i < r_i \le |a|)——第 ii 次操作中选择的下标,其中 ∣a∣|a| 表示操作前数组的长度。

若存在多个答案,输出任意一种即可。

输入输出样例

  • 输入#1

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

    输出#1

    1
    1 4
    4
    1 2
    1 2
    1 2
    1 2
    4
    5 6
    3 4
    1 2
    1 3
    3
    4 5
    4 5
    1 4
    2
    1 2
    1 3
    2
    2 4
    1 2

说明/提示

第一个测试案例中,由于 mex⁡([1,2,3,4])=0\operatorname{mex}([1,2,3,4]) = 0,经过一次操作后数组变为 [0][0]。

第二个测试案例中,数组 aa 的变化如下:

[0,1‾,0,0,1]→[2,0‾,0,1]→[1,0‾,1]→[2,1‾]→[0].[ \underline{0,1},0,0,1] \to [ \underline{2,0},0,1] \to [ \underline{1,0},1] \to [ \underline{2,1}] \to [ 0].

第三个测试案例中,数组 aa 的变化如下:

[0,0,0,0,0,0‾]→[0,0,0,0‾,1]→[0,0‾,1,1]→[1,1,1‾]→[0].[ 0,0,0,0,\underline{0,0}] \to [ 0,0,\underline{0,0},1] \to [ \underline{0,0},1,1] \to [ \underline{1,1,1}] \to [ 0].

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页