CF2064B.Variety is Discouraged

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Variety is Discouraged

题目描述

定义任意数组 bb 的分数为 bb 的长度减去其中不同元素的数量。例如:

  • 数组 [1,2,2,4][1, 2, 2, 4] 的分数为 11,因为它长度为 44 且只有 33 个不同元素(112244)。
  • 数组 [1,1,1][1, 1, 1] 的分数为 22,因为它长度为 33 且只有 11 个不同元素(11)。
  • 空数组的分数为 00

给定一个数组 aa。你需要最多一次移除一个非空的连续子数组。

更正式地说,你最多可以执行以下操作一次:

  • 选择两个整数 llrr1lrn1 \le l \le r \le n
  • aa 中删除连续子数组 [al,,ar][a_l,\ldots,a_r](即将 aa 替换为 [a1,,al1,ar+1,,an][a_1,\ldots,a_{l - 1},a_{r + 1},\ldots,a_n]

请输出一个操作,使得操作后 aa 的分数最大。若存在多个答案,输出能使操作后数组长度最短的任一解;若仍有多个答案,可输出任一。

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例数量。

每个测试用例的第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)——数组 aa 的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n1ain1 \le a_i \le n)。

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

输出格式

对于每个测试用例,若选择不执行操作,输出 00

否则输出两个整数 llrr1lrn1 \le l \le r \le n),表示被删除子数组的左右边界。

被删除的子数组应满足分数最大,且在满足该条件的所有解中选择能使数组长度最短的任一解。

说明/提示

第一个测试用例有两种选择:

  • 不操作:数组 [1][1] 的分数为 11=01-1=0
  • 删除 l=1l=1r=1r=1 的子数组:删除唯一元素后得到空数组,分数为 00

因此最大可能分数为 00。但需要额外最小化数组长度,故必须输出第二种选择 l=r=1l=r=1。注意第一种不操作的方案是错误的,因为它保留的数组长度更长。

第二个测试用例未选择任何子数组,操作后数组仍为 [1,1,1,1,1][1, 1, 1, 1, 1]。其长度为 55 且有 11 个不同元素,分数为 51=45 - 1 = 4。可以证明这是能最大化分数且长度最短的数组。

第三个测试用例选择删除子数组 [2,1, 3,2][2, \text{\color{red}{1,\ 3}}, 2],操作后数组变为 [2,2][2, 2]。其长度为 22 且有 11 个不同元素,分数为 21=12 - 1 = 1。可以证明这是能最大化分数且长度最短的数组。

翻译由 DeepSeek R1 完成

样例

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

在线编程 IDE

建议全屏模式获得最佳体验