CF2064B Variety is Discouraged
题目描述
定义任意数组 $b$ 的分数为 $b$ 的长度减去其中不同元素的数量。例如:
- 数组 $[1, 2, 2, 4]$ 的分数为 $1$,因为它长度为 $4$ 且只有 $3$ 个不同元素($1$、$2$、$4$)。
- 数组 $[1, 1, 1]$ 的分数为 $2$,因为它长度为 $3$ 且只有 $1$ 个不同元素($1$)。
- 空数组的分数为 $0$。
给定一个数组 $a$。你需要最多一次移除一个非空的连续子数组。
更正式地说,你最多可以执行以下操作一次:
- 选择两个整数 $l$ 和 $r$($1 \le l \le r \le n$)
- 从 $a$ 中删除连续子数组 $[a_l,\ldots,a_r]$(即将 $a$ 替换为 $[a_1,\ldots,a_{l - 1},a_{r + 1},\ldots,a_n]$)
请输出一个操作,使得操作后 $a$ 的分数最大。若存在多个答案,输出能使操作后数组长度最短的任一解;若仍有多个答案,可输出任一。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$)——测试用例数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$)——数组 $a$ 的长度。
每个测试用例的第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($1 \le a_i \le n$)。
所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,若选择不执行操作,输出 $0$。
否则输出两个整数 $l$ 和 $r$($1 \le l \le r \le n$),表示被删除子数组的左右边界。
被删除的子数组应满足分数最大,且在满足该条件的所有解中选择能使数组长度最短的任一解。
说明/提示
第一个测试用例有两种选择:
- 不操作:数组 $[1]$ 的分数为 $1-1=0$。
- 删除 $l=1$,$r=1$ 的子数组:删除唯一元素后得到空数组,分数为 $0$。
因此最大可能分数为 $0$。但需要额外最小化数组长度,故必须输出第二种选择 $l=r=1$。注意第一种不操作的方案是错误的,因为它保留的数组长度更长。
第二个测试用例未选择任何子数组,操作后数组仍为 $[1, 1, 1, 1, 1]$。其长度为 $5$ 且有 $1$ 个不同元素,分数为 $5 - 1 = 4$。可以证明这是能最大化分数且长度最短的数组。
第三个测试用例选择删除子数组 $[2, \text{\color{red}{1,\ 3}}, 2]$,操作后数组变为 $[2, 2]$。其长度为 $2$ 且有 $1$ 个不同元素,分数为 $2 - 1 = 1$。可以证明这是能最大化分数且长度最短的数组。
翻译由 DeepSeek R1 完成