CF2001A.Make All Equal

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

Make All Equal

题目描述

给你一个循环数组 a1,a2,,ana_1,a_2,\cdots,a_n

你可以对 aa 数组进行最多 n1n-1 次操作:

  • mmaa 数组现在的大小,你可以选择任意的两个相邻元素,使得前一个元素的值不大于后一个元素的值(特别的是 ama_ma1a_1 是相邻的,且 ama_m 是前一个元素),并将其中的任意一个删除。换句话说,选择一个整数 ii1im1 \le i \le m)使得 aia(imodm)+1a_i \le a_{(i \bmod m)+1} 成立,并将 aia_ia(imodm)+1a_{(i \bmod m)+1} 中的一个从 aa 数组中删除。

你的目标是找到使所有元素相等所需的最小操作数。

输入格式

每一个测试点包含多组数据。第一行为数据组数 tt1t5001 \le t \le 500)。下面是数据描述。

每一组数据的第一行为一个整数 nn1n1001 \le n \le 100),表示 aa 数组的大小。

数据的第二行为 nn 个整数 a1,a2,,ana_1,a_2,\cdots,a_n1ain1 \le a_i \le n),表示 aa 数组的元素的值。

输出格式

对于每组数据,每行输出一个整数,表示使所有元素相等所需的最小操作数。

说明/提示

在第一组数据中,aa 数组只有一个元素,所以我们不能进行任何操作。

在第二组数据中,我们可以执行以下操作,使得 aa 数组中的所有元素相等:

  • 选择 i=2i=2,删除 a3a_3,则 aa 数组将变为 [1,2][1,2]

  • 选择 i=1i=1,删除 a1a_1,则 aa 数组将变为 [2][2]

可以证明,我们不能进行少于 22 次的操作使得 aa 数组中的所有元素相等,所以答案是 22

样例

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

在线编程 IDE

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