3687: 简单题(bitset)
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
1 3
Sample Output
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)的更多相关文章
- BZOJ 3687: 简单题 bitset
3687: 简单题 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 小呆开始研究集合论了,他 ...
- bzoj 3687 简单题——bitset
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3687 关于 bitset :https://blog.csdn.net/snowy_smil ...
- [bzoj 3687]简单题 bitset的运用
题意 给定一个正整数集,求所有子集算术和的异或和 题解 每次加入一个元素x,用原集合a xor (a<< x) 然后每一个值统计一下 bitset看起来很优越,是一个能位运算的布尔数组 ...
- BZOJ 3687: 简单题(dp+bitset)
传送门 解题思路 设\(f(i)\)表示和为\(i\)时的方案数,那么转移方程为\(f(i)+=f(i-x)\),\(x\)为当前枚举到的数字,这样做是\(O(n\sum a_i)\)的,考虑优化.发 ...
- BZOJ 3687 简单题
bitset维护某个和是否存在. bit<<x:所有子集的和+x. #include<iostream> #include<cstdio> #include< ...
- [Bzoj3687]简单题(bitset)
3687: 简单题 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1150 Solved: 565[Submit][Status][Discuss] ...
- bzoj3687简单题(dp+bitset优化)
3687: 简单题 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 861 Solved: 399[Submit][Status][Discuss] ...
- 【bzoj3687】简单题
#3687. 简单题 内存限制:512 MiB时间限制:10 Sec 提交提交记录讨论 题目描述 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和 ...
- BZOJ3687 简单题 【bitset】
BZOJ3687 简单题 Description 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子集的异或和的异或和. 3.子集的算术和的算术和. 4.子集的算 ...
随机推荐
- 最近项目需要用到AdminLTE,所以整理一份中文版的小教程
先介绍一下AdminLTE的官方网站:AdminLTE官方网站 和GitHub:AdminLTE的github,可以在上面自行下载. AdminLTE 是一个完全响应管理模板,主要依赖于 Bootst ...
- 关于VisualStudio2010发布项目问题
VisualStudio2010速度还是很给力的,VS2015打开机器就双100%了:VS2010机器上跑起来还是很好用的. 今天编译一个MVC3.0项目,发布时候出现诡异现象:Content文件夹里 ...
- JavaScript Date对象方法详细总结
Date 对象方法 方法 描述 Date() 返回当日的日期和时间. getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象返回一周中的某 ...
- So you want to write a desktop app in Python
So you want to write a desktop app in Python Thomas Kluyver 2014-06-16 23:55 51 Comments Source This ...
- IOS 解析XML数据
● 什么是XML ● 全称是Extensible Markup Language,译作“可扩展标记语言” ● 跟JSON一样,也是常用的一种用于交互的数据格式 ● 一般也叫XML文档(XML ...
- 2017.10.12 Java的计数器的开发
//我们用一个合成的applet/application来简单显示出一个计数器的结果/** * Created by qichunlin on 2017/10/12. */ /*简单的计数器*/ im ...
- Siamese Network
摘抄自caffe github的issue697 Siamese nets are supervised models for metric learning [1]. [1] S. Chopra, ...
- leetcode第221题(最大正方形)的本地IDE实现及变形
问题描述: 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积.PS:本文也对只包含0的最大正方形面积进行了运算 示例: 输入: 1 0 1 0 0 1 0 1 1 1 ...
- 牛客小白月赛2 A 数字方阵【随机】【找规律】
链接:https://www.nowcoder.com/acm/contest/86/A 题目描述 总是对数字的神秘感感到好奇.这次,他在纸上写下了 个从 到 的数字,并把这些数字排成了 的方阵. ...
- Mysql查看锁等信息SQL语句
查看锁等信息,包括锁信息: select "HOLD:",ph.id h_processid,trh.trx_id h_trx_id,trh.trx_started h_start ...