4167 - 链路优化

题目描述

在某大型工厂的生产线上部署了 N 台具备唯一识别码的传感器设备。为了实现工厂的数字化转型,工程师需要将这些设备通过特定的点对点链路组建成一个统一的数据交换网络。

每台设备都有一个唯一的整数作为其硬件序列号。根据该工厂采用的专用总线协议,若两台序列号分别为 AB 的设备建立直接通信链路,该链路的信号传输增益定义为两序列号的按位异或值,即 Gain = A \oplus B

为了确保网络的连通性与稳定性,系统构建过程需遵循以下规范:

  1. 网络合并机制:初始时,每台设备各自处于独立的逻辑子网中。每次操作可以选择两个当前处于不同子网的设备建立一条直接通信链路。
  2. 拓扑约束:每建立一条链路,实际上是将两个子网合并为一个更大的子网。为了避免产生信号环路,当所有设备最终合并为一个统一的连通网络时,总共必须且只能建立 N-1 条链路。
  3. 性能目标:工程师的目标是合理规划这 N-1 条链路的建立顺序和连接对象,使得所有建立的链路产生的信号传输增益之和达到最大。

请根据给定的设备序列号列表,计算出该网络能够达到的最大信号增益总和。

输入

第一行包含一个正整数 N,表示工厂中部署的设备总数。

接下来的 N 行,每行包含一个整数,表示每台设备的硬件序列号。

输出

输出一个整数,表示在满足连通性要求的前提下,全网可能达到的最大信号增益总和

样例

输入

4
5
13
18
22

输出

81

输入

8
1024
2048
4096
8192
7
15
31
63

输出

64628

输入

12
1023
512
256
128
64
32
16
8
4
2
1
511

输出

10487
说明

样例 1 说明

在该样例中,共有 4 台设备,其序列号分别为 5, 13, 18, 22。最优的建网链路规划如下:

  1. 连接序列号为 1813 的设备,获得增益 18 \oplus 13 = 31
  2. 连接序列号为 2213 的设备,获得增益 22 \oplus 13 = 27
  3. 连接序列号为 185 的设备,获得增益 18 \oplus 5 = 23

建立上述三条链路后,所有设备均实现连通,且总增益为 31 + 27 + 23 = 81

数据范围

  • 对于 20\% 的数据,满足 1 \leq N \leq 20
  • 对于 40\% 的数据,满足 1 \leq N \leq 500
  • 对于 100\% 的数据,满足 1 \leq N \leq 2000,每个序列号 ID \in [1, 2^{30}-1],且每个序列号 ID 互不相同。

提示:

按位异或运算(\oplus)的定义是:对于两个二进制数,若对应位不同则结果位为 1,相同则结果位为 0。在 C++ 中可以使用 ^ 运算符实现。

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 4 枚
难度 基础


上一题 下一题