【bzoj3687】【简单题】bitset
[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的更多相关文章
- BZOJ3687 简单题 【bitset】
BZOJ3687 简单题 Description 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子集的异或和的异或和. 3.子集的算术和的算术和. 4.子集的算 ...
- bzoj3687简单题*
bzoj3687简单题 题意: 给个集合,求所有子集的元素和的异或和.集合元素个数≤1000,整个集合的元素和≤2000000 题解: 用bitset维护每个子集元素和的个数是奇数还是偶数.每次读入一 ...
- [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] ...
- BZOJ 3687: 简单题 bitset
3687: 简单题 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 小呆开始研究集合论了,他 ...
- BZOJ3687: 简单题(dp+bitset)
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1138 Solved: 556[Submit][Status][Discuss] Descripti ...
- 算法复习——bitset(bzoj3687简单题)
题目: Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和. 目前 ...
- [bzoj 3687]简单题 bitset的运用
题意 给定一个正整数集,求所有子集算术和的异或和 题解 每次加入一个元素x,用原集合a xor (a<< x) 然后每一个值统计一下 bitset看起来很优越,是一个能位运算的布尔数组 ...
- BZOJ3687: 简单题
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3687 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子 ...
- bzoj 3687 简单题——bitset
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3687 关于 bitset :https://blog.csdn.net/snowy_smil ...
随机推荐
- 孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1
孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第八天. 今天开始学习mongoDB的简单操作, ...
- hnust 神奇的序列
问题 E: 神奇的序列 时间限制: 1 Sec 内存限制: 128 MB提交: 635 解决: 84[提交][状态][讨论版] 题目描述 Aurora在南宁发现了一个神奇的序列,即对 ...
- 博客挪窝了 http://my.oschina.net/jrrx/blog
1. 博客园很不错: 2. 由于各种原因,挪到了 http://my.oschina.net/jrrx/blog
- 系统编程--文件IO
1.文件描述符 文件描述符是一个非负整数,当打开一个现有文件或创建一个新文件时候,内核向进程返回一个文件描述符,新打开文件返回文件描述符表中未使用的最小文件描述符.Unix系统shell使用文件描述符 ...
- golang中从一个日期开始往后增加一段时间
废话少说上code, 这个是从当前日期开始,往后增加一个月时间 package main import ( "fmt" "time" ) func main() ...
- jQuery选择器之全选择器(*选择器)
在css中,经常会在第一行写下这样一段样式: * { margin:; padding:; } 通配符*意味着给所有的元素设置默认的边距.jQuery中我们也可以通过传递*选择器来选中文档页面中的元素 ...
- redis各种数据结构使用场景
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- vue cli 3 & webpack-merge & webpack 3 & bug
vue cli 3 & webpack-merge & webpack & bug bug webpack-merge & bug webpack-merge ??? ...
- JS DOM对象与jQuery对象的转换
JS转jQuery // 直接用$()来包裹 如同$(this) $(document) var jsObj = document.getElementById('test'); var jquery ...
- spring in action 学习笔记十三:SpEL语言(Spring Expression Language)
SpEl语言的目的之一是防止注入外部属性的代码硬代码化.如@Value("#{student.name}")这个注解的意思是把Student类的name的属性值注入进去.其中stu ...