2 条题解
-
0
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXK = 105; int k; ll a[MAXK]; ll basis[65]; // 线性基 bool insert(ll x) { for (int i = 63; i >= 0; i--) { if (!(x >> i)) continue; if (!basis[i]) { basis[i] = x; return true; } x ^= basis[i]; } return false; } int main() { scanf("%d", &k); ll sum = 0; for (int i = 0; i < k; i++) { scanf("%lld", &a[i]); sum += a[i]; } // 从大到小排序 sort(a, a + k, greater<ll>()); ll ans = 0; for (int i = 0; i < k; i++) { if (!insert(a[i])) { ans += a[i]; // 不能插入线性基,即可以拿走 } } printf("%lld\n", ans); return 0; }
信息
- ID
- 140
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 22
- 已通过
- 5
- 上传者