[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=64333782

这次的图是自己画的,方便的话点个赞咯(^-^)

Description

小呆开始研究集合论了,他提出了关于一个数集四个问题:

1.子集的异或和的算术和。

2.子集的异或和的异或和。

3.子集的算术和的算术和。

4.子集的算术和的异或和。

目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把

这个问题交给你,未来的集训队队员来实现。

Input

第一行,一个整数n。

第二行,n个正整数,表示01,a2….,。

Output

一行,包含一个整数,表示所有子集和的异或和。

Sample Input

2

1 3

Sample Output

6

HINT

【样例解释】

6=1 异或 3 异或 (1+3)

【数据规模与约定】

ai >0,1< n<1000,∑ai≤2000000

我们希望有一个数组a[],记录每一个数的出现个数,奇数个会对答案做出贡献,偶数个则没有贡献,所以只需要1表示奇数,0表示偶数

每次新加入一个数x时,我们要对每一个a[]里有的数加x,就相当于全部右移x位(左小右大),意为新增的数们,与原a[]亦或,就可以更新每个数的奇偶了

暴力做又麻烦又要挂,考虑用bitset优化常数

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<bitset>
using namespace std; const int N=1000+5;
const int A=2000000+5; bitset<A> a;
int n,x; int main(){
scanf("%d",&n);
a[0]=1;
for(int j=1;j<=n;j++){
scanf("%d",&x);
a=a^(a<<x);
}
int ans=0;
for(int i=1;i<=A;i++){
if(a[i]) ans^=i;
}
printf("%d",ans);
return 0;
}

总结:

1、学会灵活运用位运算,将普通bool数组用二进制数来表示,就可以进行很多灵活的操作

2、bitset在写暴力的时候说不定能卡过去

【bzoj3687】【简单题】bitset的更多相关文章

  1. BZOJ3687 简单题 【bitset】

    BZOJ3687 简单题 Description 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子集的异或和的异或和. 3.子集的算术和的算术和. 4.子集的算 ...

  2. bzoj3687简单题*

    bzoj3687简单题 题意: 给个集合,求所有子集的元素和的异或和.集合元素个数≤1000,整个集合的元素和≤2000000 题解: 用bitset维护每个子集元素和的个数是奇数还是偶数.每次读入一 ...

  3. [Bzoj3687]简单题(bitset)

    3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1150  Solved: 565[Submit][Status][Discuss] ...

  4. bzoj3687简单题(dp+bitset优化)

    3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 861  Solved: 399[Submit][Status][Discuss] ...

  5. BZOJ 3687: 简单题 bitset

    3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 小呆开始研究集合论了,他 ...

  6. BZOJ3687: 简单题(dp+bitset)

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1138  Solved: 556[Submit][Status][Discuss] Descripti ...

  7. 算法复习——bitset(bzoj3687简单题)

    题目: Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和.    目前 ...

  8. [bzoj 3687]简单题 bitset的运用

    题意 给定一个正整数集,求所有子集算术和的异或和   题解 每次加入一个元素x,用原集合a xor (a<< x) 然后每一个值统计一下 bitset看起来很优越,是一个能位运算的布尔数组 ...

  9. BZOJ3687: 简单题

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3687 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子 ...

  10. bzoj 3687 简单题——bitset

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3687 关于 bitset :https://blog.csdn.net/snowy_smil ...

随机推荐

  1. ASP NET Core 部署 IIS 和发布

    1. 微软官网原文链接: https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore- ...

  2. sources.ustc.debian

    deb http://mirrors.ustc.edu.cn/debian/ jessie main contrib non-free deb-src http://mirrors.ustc.edu. ...

  3. beta版本前准备

    目录 过去存在的问题 任务分工 开发规范 后端总结 卉卉 家灿 前端总结 绪佩 青元 恺琳 宇恒 丹丹 算法&API接口 家伟 鸿杰 一好 文档&博客撰写 政演 产品功能 我们已经做了 ...

  4. quagga源码学习--BGP协议中的routemap

    路由策略的基础知识 定义 路由策略(Routing Policy)作用于路由,主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径. 目的 路由器在发布. ...

  5. 201621123034 《Java程序设计》第9周学习总结

    作业09-集合与泛型 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 答:Map的HashMap中使用嵌套类static class Node<K,V& ...

  6. iOS runLoop 理解

    目录 概述 run loop modes 一.概述 run loop叫事件处理循环,就是循环地接受各种各样的事件.run loop是oc用来管理线程里异步事件的工具.一个线程通过run loop可以监 ...

  7. 【bzoj2793】[Poi2012]Vouchers 暴力

    题目描述 考虑正整数集合,现在有n组人依次来取数,假设第i组来了x人,他们每个取的数一定是x的倍数,并且是还剩下的最小的x个.正整数中有m个数被标成了幸运数,问有哪些人取到了幸运数. 输入 第一行一个 ...

  8. hdu 1551 Cable master (二分法)

    Cable master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  9. Vue,watch观察对象中的某个属性的变化

    你只需要属性这样写,用引号引起来

  10. EAR、JAR、WAR(IT)

    EAR文件包括整个项目,内含多个ejb module(jar文件)和web module(war文件)   JAR.WAR.EAR.在文件结构上,三者并没有什么不同,它们都采用zip或jar档案文件压 ...