1 条题解
-
1
未开发
using namespace std; typedef long long ll; const int N = 110, len = 32; bool vis[N]; ll a[N], b[N]; int n; bool insert(ll x) { for(int j = len; j >= 0; --j) { if((x & (1ll << j))== 0) continue; if(b[j]) x ^= b[j]; else{ for(int k = j - 1; k >= 0; --k) { if(x & (1ll << k)) x ^= b[k]; } for(int k = len; k >= j + 1; --k) { if(b[k] & (1ll << j)) b[k] ^= x; } b[j] = x; return true; } } return false; } int main() { scanf("%d", &n); for(int i = 0; i < n; ++i) scanf("%lld", &a[i]); sort(a, a + n, greater<int>()); int cnt = 0; ll sum = 0; for(int i = 0; i < n; ++i) { if(insert(a[i])) vis[i] = true, cnt++; else sum += a[i]; } if(cnt == 1) printf("-1\n"); else printf("%lld\n", sum); return 0; }
- 1
信息
- ID
- 140
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 18
- 已通过
- 4
- 上传者