#C1028. T2分组(distribution)

T2分组(distribution)

题目描述

现在有 n 个非负整数 a1,a2...ana_1,a_2... a_n,你需要将这些数分成若干组,满足 n 个数中的每一个数都恰好被分到了一个组中,且每一组至少包含一个数。

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

输入格式

在文件 distribution.in 中读入。

第一行输入一个正整数 n

第二行输入n个整数 a1,a2...ana_1,a_2... a_n,表示 n 个非负整数。

输出格式

在文件 distribution.out 中输出。

输出一个整数,表示权值之和的最小值。

样例

样例输入 #1

3
1 2 5

[Copy](javascript:;)

样例输出 #1

6

[Copy](javascript:;)

样例 1 解释

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

  • 将第 1 个数和第 3 个数分为一组,该组的权值为 4
  • 将第 2 个数分为一组,该组的权值为 2

该分组方案的所有组的权值之和为 4 + 2 = 6.

大样例在sample/distribution文件夹下

数据范围

对于 20% 的数据,n15n≤15

对于 100% 的数据,n106,ai109n≤10^6,a_i≤10^9