题目描述

小呆开始研究集合论了,他提出了关于一个数集四个问题:
1.子集的异或和的算术和。
2.子集的异或和的异或和。
3.子集的算术和的算术和。
4.子集的算术和的异或和。
目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把这个问题交给你,未来的集训队队员来实现。

输入

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

输出

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

样例输入

2
1 3

样例输出

6


题解

背包dp+STL-bitset

首先想想暴力怎么做?设f[i]表示i出现在算术和中的次数,那么对于a[j],有f[i]+=f[i-a[j]]。最后统计哪些数出现了奇数次即可。

那么怎么优化这个暴力?我们其实不需要知道某个数出现的具体次数,只需要知道它出现次数的奇偶性即可。

所以我们可以使用bitset压位来解决。

具体实现还是比较简单的,直接位运算然后异或即可。

#include <cstdio>
#include <bitset>
using namespace std;
bitset<2000010> f;
int main()
{
int n , i , x , m = 0 , ans = 0;
scanf("%d" , &n);
f[0] = 1;
for(i = 1 ; i <= n ; i ++ ) scanf("%d" , &x) , f ^= (f << x) , m += x;
for(i = 1 ; i <= m ; i ++ ) if(f[i]) ans ^= i;
printf("%d\n" , ans);
return 0;
}

【bzoj3687】简单题 背包dp+STL-bitset的更多相关文章

  1. BZOJ3687 简单题 【bitset】

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

  2. bzoj3687简单题*

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

  3. 【BZOJ3687】简单题 背包+bitset

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

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

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

  5. [Bzoj3687]简单题(bitset)

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

  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. 「bzoj3687: 简单题」

    题目 发现需要一个\(O(n\sum a_i )\)的做法 于是可以直接做一个背包,\(dp[i]\)表示和为\(i\)的子集是否有奇数种 \(bitset\)优化一下就好了 #include< ...

  9. BZOJ3687: 简单题

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

随机推荐

  1. MRCA|Wright–Fisher population genetic model|SNP rate

    (Panda has a high heterozygosity rate) 通过对mtDNA(为了预测SNP的密度)的分析,可知panda的多样性,当前全基因组数据才能完全建立模型. mitocho ...

  2. SQLSERVER存储过程的基本语法实例

    SQLSERVER存储过程的基本语法实例 SQLSERVER存储过程的基本语法实例 一.定义变量--简单赋值 declare @a intset @a=5 print @a --使用select语句赋 ...

  3. split 分割压缩文件

    1.普通tar压缩命令 tar -zcvf cm-11.tar.gz cm-11 //将cm-11文件夹压缩成cm-11.tar.gz 2.压缩后的文件太大,需要将cm-11.tar.gz分割成N个指 ...

  4. mysql中如何不重复插入,mysql 重复的不插入,mysql唯一的插入

    INSERT INTO new_schedules_spider_shipsname ( ID,SCAC,VESSEL,VOYAGE,SERVICE_NAME,MD5 ) SELECT NULL,%s ...

  5. LeetCode955删列造序 ||

    问题:删列造序 || 给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等. 选取一个删除索引序列,对于 A 中的每个字符串,删除对应每个索引处的字符. 比如,有 A = [" ...

  6. 【PHP】$_SERVER整理

    PHP变成中经常需要用到服务器的一些资料,我在这里整理一下,方便查找.第一部分为比较常用的$_SERVER $_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERV ...

  7. python3 练习题100例 (十五)

    这个比较难,主要难在考虑的问题太多,有好几个还没写出来.有空再来改进.请高手指教! #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ ...

  8. iOS SDK中使用NSXMLParser解析XML(iphone网络篇三)

    iOS SDK的NSXMLParser解析XML文档是事件驱动模式的,即采用SAX方式来解析XML格式文档.NSXMLParser在处理XML文档的过程中当遇到一些要素(元素.属性.CDATA块.评论 ...

  9. 在virtualBox中打开vdi(转载)

    在VirtualBox中启动“新建虚拟机”向导.第一步,输入名称“ubuntu”,选择系统类型为“Linux 2.6”.第二步,内存大小默认是256MB,不变.第三步,虚拟硬盘,点击按钮“现有”,在新 ...

  10. 【转载】2015年8月编程语言排行榜:Java遥遥领先

    Java以4.5%的差距遥遥领先于第二名,回顾以前Java有这样的成绩还是在2008年.Java version 8的成功主要是因为函数式编程习语的添加.Java出现下滑是在2010年 Oracle收 ...