#L0117. 分组异或的最小代价

分组异或的最小代价

题目背景

小夜在整理储物柜时发现了一沓写着数字的卡片。她想把这些卡片分成若干摞,使某种「代价」尽可能小。

题目描述

给定 nn 个非负整数 a1,a2ana_1,a_2\cdots a_n。你需要将这些数分成若干组,满足每个数恰好被分到一个组中,且每一组至少包含一个数。

定义一组数的权值为该组内所有数的异或和。请求出一种分组方案,使得所有组的权值之和最小,输出这个最小值。

输入格式

输入的第一行包含一个正整数 nn,表示给定的非负整数的数量。

接下来一行包含 nn 个非负整数 a1,a2ana_1,a_2\cdots a_n

输出格式

输出一行一个整数表示答案。

样例

3
1 2 5
6
6
9 18 36 25 9 32
15

提示

样例 11 解释:

一种最优的分组方案如下:

  • 将第 11 个数和第 33 个数分为一组,该组的权值为 15=41\oplus 5 = 4
  • 将第 22 个数分为一组,该组的权值为 22

所有组的权值之和为 4+2=64 + 2 = 6,不存在更小的分组方案。

样例 22 解释:

一种最优的分组方案如下:

  • 将第 11 个数和第 55 个数分为一组,该组的权值为 99=09\oplus 9 = 0
  • 将第 22 个数和第 44 个数分为一组,该组的权值为 1825=1118\oplus 25 = 11
  • 将第 33 个数和第 66 个数分为一组,该组的权值为 3632=436\oplus 32 = 4

所有组的权值之和为 0+11+4=150 + 11 + 4 = 15

数据范围

对于 100%100\% 的数据,满足 n106n\leq 10^6ai109a_i \leq 10^9

难度 普及-
通过率
尝试 0
已通过 0
ID
851
类型
传统题
Time Limit
1000ms
Memory Limit
125MiB
上传者