1 条题解
-
0
bitset的每一位表示和为下标的子集出现的次数是奇数还是偶数,每加入一个数,原来的每一个子集就有包含这个数和不包含这个数两种情况,如果不包含,不变,如果包含,子集和加上新数,用bitset表示也就是向左移动那么多位。
#include <bits/stdc++.h> using namespace std; const int N=2e6; bitset<N+1> f; int main() { int n;scanf("%d", &n); f.set(0); for (int i=0,x;i<n;++i)scanf("%d",&x),f^=f<<x; int ans=0; for (int i=1;i<= N;++i) if(f[i])ans^=i; printf("%d\n", ans); return 0; }
- 1
信息
- ID
- 5352
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 91
- 已通过
- 26
- 上传者