算法
(bit全探索) $O(2^{n-1}*n)$
最多可对数组划分 $n - 1$次,而 $n$ 最大只有 $20$,所以可以使用 bit
全探索。
C++ 代码
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using std::cin;
using std::cout;
using std::vector;
using std::min;
int main() {
int n;
cin >> n;
vector<int> a(n);
rep(i, n) cin >> a[i];
int ans = 1 << 30;
rep(s, 1 << (n - 1)) {
int now = 0;
int o = 0;
rep(i, n) {
o |= a[i];
if (s >> i & 1) {
now ^= o;
o = 0;
}
}
now ^= o;
ans = min(ans, now);
}
cout << ans << '\n';
return 0;
}