CF282E Sausage Maximization

题目描述

比特兰人是一群相当奇怪的人。他们有自己的问题,也有自己的解决方案。他们有自己的思想和信仰,有自己的价值观和美德。他们有自己的菜肴和香肠! 在比特兰,一根香肠就是一个整数数组!香肠的美味值等于该香肠中所有整数的按位异或(即 $xor$ 操作)。 有一天,当比特科奇先生(当地厨师)准备关门时,比特哈瓦尔和比特阿里奥,比特兰最著名的两位公民,走进餐厅,分别点了一根香肠。 但是比特科奇先生只剩下一根香肠了。于是他决定把这根香肠切成两部分,前缀(即若干个,也可以是零个,最前面的数组元素)分给比特哈瓦尔,后缀(即若干个,也可以是零个,最后的数组元素)分给比特阿里奥。注意,所切的两部分不能有重叠(即任一数组元素不会同时属于两部分),其中一部分或两部分也可以是空的。 比特哈瓦尔和比特阿里奥的快乐值等于他们各自香肠美味值的按位异或。空香肠的美味值为零。 请你找出一种切分方式,使得这两位杰出的市民获得的快乐值最大。

输入格式

第一行包含一个整数 $n$($1 \le n \le 10^{5}$)。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le 10^{12}$)——比特科奇先生的香肠。 请不要在 C++ 中使用 %lld 读取或输出 64 位整数,推荐使用 cin、cout 流或者 %I64d。

输出格式

输出一个整数,表示比特哈瓦尔和比特阿里奥这次用餐所能获得的最大快乐值。

说明/提示

由 ChatGPT 5 翻译