#2074. CF1954B - Make It Ugly

CF1954B - Make It Ugly

题目背景

  • 没有注册 codeforces 参考此教程注册。

codeforces 注册教程

注册完毕以后点我进入原题提交

  1. 做完后记得选择这个选择题。 {{ select(1) }}
  • 提交并且通过了
  • 还没有提交,或者提交了 WA 了。

题目描述

让我们把一个长度为 nn 的数组 aa 称为 美丽 数组,如果你能通过任意次数(可能是零)的以下操作使数组中的所有元素都相同的话:

  • 选择一个索引 ii ( 2in12 \le i \le n - 1 ),比如 ai1=ai+1a_{i - 1} = a_{i + 1} ,然后用 ai1a_{i - 1} 替换 aia_i

给你一个漂亮的数组 a1,a2,,ana_1, a_2, \dots, a_n 。要使数组不再美丽,至少要删除多少个元素?禁止交换元素。如果不可能做到,那么输出 1-1

输入格式

第一行包含一个整数 tt ( 1t1041 \le t \le 10^4 ) - 测试用例数。

每个测试用例的第一行包含一个整数 nn ( 1n31051 \le n \le 3 \cdot 10^5 )。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n ( 1ain1 \le a_i \le n )。

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

输出格式

对于每个测试用例,输出一个整数--为了使数组 aa 不再美丽,你必须从数组 aa 中移除的最小元素数。如果不可能,则输出 1-1

4
3
2 2 2
5
1 2 1 2 1
1
1
7
3 3 3 5 3 3 3
-1
1
-1
3

样例解释

在第一个测试案例中,不可能通过修改数组的方式使其不再美丽。无论我们从数组中删除多少数字,由相同数字组成的数组都会保持美丽。

例如,在第二个测试案例中,你可以删除索引 55 中的数字。

这样得到的数组将是 [1,2,1,2][1, 2, 1, 2] 。让我们看看它是否漂亮。有两种操作可供选择:

  • 选择 i=2i = 2 :数组变为 [1,1,1,2][1, 1, 1, 2] 。不能再对其进行其他操作,而且数字也不尽相同。
  • 选择 i=3i = 3 :数组变为 [1,2,2,2][1, 2, 2, 2] 。也不能对其进行更多的运算,数字仍然不完全相同。

因此,数组 [1,2,1,2][1, 2, 1, 2] 并不美。

在第四个测试用例中,可以删除前三个元素。这样得到的数组 [5,3,3,3][5, 3, 3, 3] 并不美观。