B. 第2题-统一仪表读数

第2题-统一仪表读数

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目内容

在一间实验室中,工程师记录了 nn 台仪器的读数,每个读数都是一个非负整数。他可以对任意一台仪器的读数进行操作:每次操作选定该读数二进制表示下的一个比特位,将其反转(即 00 变为 11,11 变为 00)。

工程师希望经过若干次这样的操作后,所有仪器的读数完全相等。请计算达成该目标所需的最少操作次数。

约束:读数个数 nn 不超过 10510^5,每个读数 aia_i 满足 0≤ai≤231−10 \le a_i \le 2^{31}-1。

输入描述

第一行包含一个正整数 nn,表示仪器的数量。 第二行包含 nn 个非负整数,依次表示各仪器的初始读数,数之间用空格分隔。

输出描述

输出一个整数,表示让所有读数相等所需的最少反转操作次数。

样例1

输入

3
2 3 2

输出

1

说明

三个读数分别为 2、3、2,二进制表示依次为 10、11、10。

按位独立统计:

  • 第 00 位(最低位):0 出现 2 次(来自两个 2),1 出现 1 次(来自 3),该位最少操作次数为 min⁡(2,1)=1\min(2,1)=1。
  • 第 11 位:三个数均为 1,0 出现 0 次,1 出现 3 次,最少操作次数为 min⁡(0,3)=0\min(0,3)=0。 更高位所有读数均为 0,操作次数为 00。

总最少操作次数为 1+0=11+0=1。实际操作可以是翻转 3 的第 00 位,使其从 1 变为 0,从而三个数都变成 2。

样例2

输入

4
7 7 7 7

输出

0

说明

所有读数已经相等,均为 7。

在二进制下,每个比特位上的值完全一致,0 和 1 的计数中总有一方为 0,因此每一位的最少操作次数均为 00。总最少操作次数为 00。不需要任何操作。

样例3

输入

5
0 1 2 4 8

输出

4

说明

五个读数分别为 0、1、2、4、8。

考虑二进制低 44 位(第 00 位到第 33 位):

  • 第 00 位:1(来自 1)出现 1 次,0 出现 4 次,最少操作次数 min⁡(1,4)=1\min(1,4)=1。
  • 第 11 位:1(来自 2)出现 1 次,0 出现 4 次,最少操作次数 11。
  • 第 22 位:1(来自 4)出现 1 次,0 出现 4 次,最少操作次数 11。
  • 第 33 位:1(来自 8)出现 1 次,0 出现 4 次,最少操作次数 11。 更高位所有读数均为 0。

总最少操作次数为 1+1+1+1=41+1+1+1=4。一种可行方案是将所有非零读数通过一次反转变为 0,总共需要 4 次操作。

样例4

输入

2
0 2147483647

输出

31

说明

两个读数分别为 0 和 2147483647(即 231−12^{31}-1)。

0 的二进制表示包含 3131 个 0,而 2147483647 的二进制表示包含 3131 个 1。 对于第 00 位到第 3030 位,每一位上 0 出现 1 次,1 出现 1 次,该位最少操作次数为 min⁡(1,1)=1\min(1,1)=1。 共 3131 位,因此总最少操作次数为 3131。可以全部变为 0(将 2147483647 的 3131 个 1 逐一反转)或全部变为 2147483647(将 0 的 3131 个 0 逐一反转)。

春招模拟赛第七场|阿里巴巴|2023.04.12研发岗笔试

Not Attended
Status
Done
Rule
IOI
Problem
3
Start at
2023-4-18 19:00
End at
2023-4-18 20:20
Duration
1.3 hour(s)
Host
Partic.
74