3687: 简单题

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 700  Solved: 319
[Submit][Status][Discuss]

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。

分析

神题!!!

f[i] 表示数字i对答案有没有贡献(即数字i能否被集合里的元素合成,且出现了奇数次)。

那么f[0]=1(空集)

假设当前可以合成的数是a1,a2,...,ak,f[a1]=1,f[a2]=1,f[ak]=1

对于一个新加入得元素x,那么a1+x,a2+x,...ak+x又是可以合成的。但是可能合成的数在以前已经可以合成了,那么加入x后,这个数就出现了两次,异或之后为0,所以要消去。

栗子:可以合成的数:0,3,5,加入2,新的可以合成的数:2=0+2,5=3+2,7=5+2,而5之前就存在了,所以消去。

代码实现:用bitset实现,支持左移和异或

code

 #include<cstdio>
#include<bitset>
#include<iostream> using namespace std; bitset<>f; int main () {
int n;
cin >> n;
f[] = ;
for (int a,i=; i<=n; ++i) {
scanf("%d",&a);
f ^= f<<a;
}
int ans = ;
for (int i=; i<=; ++i) {
if (f[i]) ans ^= i;
}
cout << ans;
return ;
}

3687: 简单题(bitset)的更多相关文章

  1. BZOJ 3687: 简单题 bitset

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

  2. bzoj 3687 简单题——bitset

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

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

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

  4. BZOJ 3687: 简单题(dp+bitset)

    传送门 解题思路 设\(f(i)\)表示和为\(i\)时的方案数,那么转移方程为\(f(i)+=f(i-x)\),\(x\)为当前枚举到的数字,这样做是\(O(n\sum a_i)\)的,考虑优化.发 ...

  5. BZOJ 3687 简单题

    bitset维护某个和是否存在. bit<<x:所有子集的和+x. #include<iostream> #include<cstdio> #include< ...

  6. [Bzoj3687]简单题(bitset)

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

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

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

  8. 【bzoj3687】简单题

    #3687. 简单题 内存限制:512 MiB时间限制:10 Sec 提交提交记录讨论 题目描述 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和 ...

  9. BZOJ3687 简单题 【bitset】

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

随机推荐

  1. Osclass-3.6.1 (Openlogic CentOS 7.2)

    平台: CentOS 类型: 虚拟机镜像 软件包: osclass3.6.1 cms commercial content management ecommerce open-source 服务优惠价 ...

  2. 2013应届毕业生各大IT公司待遇整理汇总篇(转)

    不管是应届毕业生还是职场中人,在找工作时都必然会对待遇十分关注,而通常都是面试到最后几轮才知道公司给出的待遇.如果我们事先就了解大概行情,那么就会在面试之前进行比较,筛选出几个心仪的公司,这样才能集中 ...

  3. JavaScript 如何编写计算器

    1.JavaScript制作计算器 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  4. 一起来看看IOS内存泄漏的一个问题

    很多iOS开发的朋友都是比较关心内存泄漏的问题,在实际的开发工作中首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复.最简单的方法当然是借助于专业的检测工具,比 ...

  5. js01

    /////////////////////////////////////////////////////////////js开端/////////////////////////////////// ...

  6. ListView、DataGrid 不显示列标题

    <!--ListView不显示列标题--> <Style TargetType="{x:Type GridViewColumnHeader}"> <S ...

  7. sublime text2卸载和重新安装(转载)

    很多同学使用 sublime text2 的时候,出现一些奇怪的bug,且重启无法修复. 于是,就会想到卸载 sublime text2 再重新安装. 然而,你会发现,重新安装后,这个bug任然存在, ...

  8. win10自带应用图标显示感叹号无法打开如何解决(详细版)

    现象 今天打开电脑图片时发现系统自带的大多应用都无法运行,这些应用图标上都显示着一个感叹号, 应用图标上的颜色被覆上了一层黑色点击后无法运行,自带的应用商店也无法打开,想重装软件都不行这是怎么回事呢? ...

  9. 1.6 NBU Catalog备份还原

    用户的数据保存到了磁盘或者磁带中,并且是安全的,NBU所在的机器还有可能发生故障,需要重新安装或者将NBU部署到其他的机器中继续使用. 在这种情况下,如何让NBU知道用户已经存在的备份策略和存储单元配 ...

  10. Linux查看CPU和内存使用情况[转]

    在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...