| 问题描述 |
|---|
在一次星际航行中,你的飞船遭遇了未知的电磁风暴,主引擎完全失去动力。为了重启星舰,你必须前往动力室,利用备用的 $$N$$ 个“能量模块”来重新激活主引擎(模块编号从 $$1$$ 到 $$N$$)。每个能量模块都有一个固有的能量频段值,记为非负整数 $$E_i$$。 你需要从中挑选出任意数量(至少一个)的能量模块,并决定它们的激活顺序。当模块被依次激活接入引擎时,引擎内部的“能量场”会发生如下动态变化: 初始时刻,引擎内部的能量场状态值 $$S = 0$$,系统累积的总启动能量 $$R = 0$$。 假设你挑选出 $$k$$ 个模块,并以序列 $$P_1, P_2, \dots, P_k$$ 的顺序依次激活。当第 $$i$$ 个模块 $$P_i$$ 被激活时,系统会按以下两个步骤发生变化: 1. 产生共振并吸收:该模块的能量会与当前引擎中残留的能量场 $$S$$ 发生干涉,产生一股新的共振能量。这股能量等于 $$E_{P_i}$$ 与当前 $$S$$ 的按位与。随后,系统的总启动能量 $$R$$ 会将其吸收,更新公式为: $$R = R \oplus (E_{P_i} \& S)$$ 2. 融入并改变场态:紧接着,该模块的能量会完全融入引擎,导致当前的能量场状态发生改变,更新公式为: $$S = S \oplus E_{P_i}$$ (注:上述公式中的 $$\&$$ 表示按位与,$$\oplus$$ 表示按位异或) 舰载系统提示你:模块的激活顺序将极大程度地决定最终累积的总启动能量 $$R$$。请找出一个激活序列,使得最终的启动能量 $$R$$ 达到最大值,以确保飞船成功跃迁。如果存在多种激活序列都能得到相同且最大的 $$R$$,系统要求你输出其中字典序最小的序列。
|
| 输入描述 |
第一行包含一个正整数 $$N$$($$1 \le N \le 20$$),表示备用的能量模块数量。 第二行包含 $$N$$ 个非负整数 $$E_1, E_2, \dots, E_N$$($$0 \le E_i \le 10^9$$),表示每个能量模块的能量频段值。
|
| 输出描述 |
第一行输出可能达到的最大总启动能量 $$R$$。 第二行输出若干个用单空格分隔的整数,表示字典序最小的最优激活序列。
|
| 样例输入复制样例 |
4 3 5 6 7 |
| 样例输出 |
7 1 2 3 |
| 提示说明 |
对于样例数据,最优激活序列为 "1 2 3",即依次激活能量频段值为 3、5、6 的模块。具体的能量场动态变化过程如下: 初始状态 引擎内部的能量场状态值 $$S = 0$$,系统累积的总启动能量 $$R = 0$$。 第一步:激活模块 1(能量值 $$E_1 = 3$$) 产生共振并吸收:$$R = 0 \oplus (3 \& 0) = 0 \oplus 0 = 0$$。 融入并改变场态:$$S = 0 \oplus 3 = 3$$。 第二步:激活模块 2(能量值 $$E_2 = 5$$) 产生共振并吸收:$$5 \& 3 = 1$$(二进制推导为 $$101 \& 011 = 001$$),所以更新 $$R = 0 \oplus 1 = 1$$。 融入并改变场态:$$S = 3 \oplus 5 = 6$$(二进制推导为 $$011 \oplus 101 = 110$$)。 第三步:激活模块 3(能量值 $$E_3 = 6$$) 产生共振并吸收:$$6 \& 6 = 6$$,所以更新 $$R = 1 \oplus 6 = 7$$。 融入并改变场态:$$S = 6 \oplus 6 = 0$$。 最终结果 此时达到的总启动能量 $$R = 7$$。满足 $$R = 7$$ 的序列可能不止一种组合,但严格按照系统要求,"1 2 3" 是所有能达到该能量值的序列中,字典序最小的最优解。
|
| 相关 |