6661: Array Cloning Technique

内存限制:256 MB 时间限制:2 S
题面:传统 评测方式:文本比较 上传者:
提交:0 通过:0

题目描述


你一开始有一个长度为 $n$ 的数组 $a$。你可以执行若干次操作,每次操作为如下两种中的一种:

- 选择任意一个数组并新建一个和该数组完全相同的新数组。
- 交换任意两个元素。这两个元素可能是在同一个数组中,也可能是在两个不同的数组中。
你希望最终得到一个所有元素完全相同的数组,求达到这个目标的最小操作次数。

数据范围:

- $t$ 组数据,$1\leqslant t\leqslant 10^4$。
- $1\leqslant n\leqslant 10^5$。
- $-10^9\leqslant a_i\leqslant 10^9$。

输入格式

输入包含多组数据。第一行包含一个整数 $ t $ ( $ 1 \le t \le 10^4 $ ) — 表述测试数据的组数。

每组数据的第一行,包括一个整数 $ n $ ( $ 1 \le n \le 10^5 $ ) — 表示数组a的长度。 

第二行包括n哥整数,表示 数组a的每个元素值。 $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ -10^9 \le a_i \le 10^9 $ ) 

保证各组n的和不超过 1e5

输出格式

## 输出格式

每组数据输出一个整数n,表示 达到这个目标的最小操作次数
## 样例 #1

### 样例输入 #1

```
6
1
1789
6
0 1 3 3 7 0
2
-1000000000 1000000000
4
4 3 2 1
5
2 5 7 6 3
7
1 1 1 1 1 1 1
```

### 样例输出 #1

```
0
6
2
5
7
0
```

## 提示

第一组数据所有元素相同,不需要操作 .

In the second test case it is possible to create a copy of the given array. After that there will be two identical arrays:

 $ [ \ 0 \ 1 \ 3 \ 3 \ 7 \ 0 \ ] $ and $ [ \ 0 \ 1 \ 3 \ 3 \ 7 \ 0 \ ] $

After that we can swap elements in a way so all zeroes are in one array:

 $ [ \ 0 \ \underline{0} \ \underline{0} \ 3 \ 7 \ 0 \ ] $ and $ [ \ \underline{1} \ 1 \ 3 \ 3 \ 7 \ \underline{3} \ ] $

Now let's create a copy of the first array:

 $ [ \ 0 \ 0 \ 0 \ 3 \ 7 \ 0 \ ] $ , $ [ \ 0 \ 0 \ 0 \ 3 \ 7 \ 0 \ ] $ and $ [ \ 1 \ 1 \ 3 \ 3 \ 7 \ 3 \ ] $

Let's swap elements in the first two copies:

 $ [ \ 0 \ 0 \ 0 \ \underline{0} \ \underline{0} \ 0 \ ] $ , $ [ \ \underline{3} \ \underline{7} \ 0 \ 3 \ 7 \ 0 \ ] $ and $ [ \ 1 \ 1 \ 3 \ 3 \ 7 \ 3 \ ] $ .

Finally, we made a copy where all elements are equal and made $ 6 $ operations.

It can be proven that no fewer operations are enough.

输入样例 复制

6
1
1789
6
0 1 3 3 7 0
2
-1000000000 1000000000
4
4 3 2 1
5
2 5 7 6 3
7
1 1 1 1 1 1 1

输出样例 复制

0
6
2
5
7
0

分类标签