#CF2001A. 使所有元素相等
使所有元素相等
A. 使所有元素相等
每测试点时间限制:1 秒
内存限制:256 兆字节
你有一个循环数组 。
你可以对数组 执行至多 次如下操作:
设 为数组 当前的长度,你可以选择任意两个相邻的元素,且前一个元素不大于后一个元素(特别地, 与 相邻,且 是前一个),然后删除其中一个元素。
换句话说,选择一个整数 (),满足 ,然后删除 或 中的一个。
你的目标是让 中的所有元素都相等。
求达成目标所需的最少操作次数。
输入
每个测试点包含多个测试用例。第一行包含整数 (),表示测试用例的数量。
接下来每个测试用例的描述格式如下:
第一行包含一个整数 (),表示数组 的长度。
第二行包含 个整数 (),表示数组 的元素。
输出
对于每个测试用例,输出一行一个整数:使所有元素相等所需的最少操作次数。
示例
输入:
7
1
1
3
1 2 3
3
1 2 2
5
5 4 3 2 1
6
1 1 2 2 3 3
8
8 7 6 3 8 7 6 3
6
1 1 4 5 1 4
输出:
0
2
1
4
4
6
3
注
在第一个测试用例中, 只有一个元素,无法进行操作。
在第二个测试用例中,可以通过以下操作使所有元素相等:
- 选择 ,删除 ,得到 。
- 选择 ,删除 ,得到 。
可以证明无法用少于 次操作达成目标,因此答案是 。