[BZOJ3687][简单题][Bitset]
2017-02-23 14:27
239 查看
[BZOJ3687][简单题][Bitset]
题目一上来四个问题直接吓死我。。。然后发现只用做第四个问题。。。
思路:
由于最终答案求的是异或和,一个数异或另一个数两遍还是这个数本身,所以每一个数只有0/1两种状态,就可以开一个长度为最大数的Bitset,每一位代表这一位下标代表的数字是否存在。那么加入一个数K,就把这个Bitset整体左移K位就好了。
至于Bitset是什么,感性的理解为一个超长的二进制就好了,可以进行二进制的任何操作。
然而这道题读入优化会RE是什么鬼……
代码:
#include <bits/stdc++.h> const int Maxn = 2000010; using namespace std; int n, k; long long ans; bitset<Maxn> f; int main(void) { // freopen("in.txt", "r", stdin); f[0] = 1; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &k); f = f ^ (f << k); } for (int i = 1; i <= 2000000; i++) if (f[i]) { ans ^= i; } printf("%lld\n", ans); return 0; }
完。
By g1n0st
相关文章推荐
- bzoj 3687 简单题 - bitset
- BZOJ3687 简单题 解题报告 【递推】【bitset】
- 【BZOJ3687】简单题 背包+bitset
- [bzoj3687]简单题 bitset
- 【bzoj3687】 简单题 bitset
- 【bitset乱搞】BZOJ3687 简单题
- [Bzoj3687]简单题(bitset)
- bzoj 3687 简单题|bitset
- 【bzoj3687】【简单题】bitset
- [bzoj 3687] 简单题:bitset,DP
- BZOJ 4000 3687 简单题 dp+bitset
- 【bzoj3687】【简单题】【bitset】
- [bzoj 3687]简单题 bitset的运用
- bzoj 3687 简单题 bitset 解题报告
- BZOJ 3687: 简单题 bitset 题解
- 【BZOJ】3687 简单题 DP+bitset
- BZOJ_3687_简单题_bitset
- [bzoj3687]简单题(bitset)
- [bitset]BZOJ 3687——简单题
- 【BZOJ3687】简单题【bitset】