BZOJ3687 简单题


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&gt;0,1&lt;n&lt;1000,∑ai≤2000000" role="presentation">ai>0,1<n<1000,∑ai≤2000000ai>0,1<n<1000,∑ai≤2000000。


我们发现在异或情况下,对于一个相同的数,出现奇数次为0,出现偶数次是原数,所以我们只需要统计一个数出现了奇数次还是偶数次,定义bitset第k位代表和为k的方案数是奇数还是偶数,我们发现,当新加入一个数t,新增相当于将bitset向右移动t位,再异或上原集就是当前集合,最后跑一遍判断每个数是否存在奇数次,是就在答案上异或


#include<bits/stdc++.h>
using namespace std;
#define N 2000010
bitset<N> s;
int ans=0,sum=0;
int main(){
int n;scanf("%d",&n);
s[0]=1;
for(int i=1;i<=n;i++){
int x;scanf("%d",&x);
s^=(s<<x);
sum+=x;
}
for(int i=1;i<=sum;i++)if(s[i])ans^=i;
printf("%d",ans);
return 0;
}

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

  1. bzoj3687简单题*

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

  2. [Bzoj3687]简单题(bitset)

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

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

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

  4. BZOJ 3687: 简单题 bitset

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

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

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

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

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

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

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

  8. BZOJ3687: 简单题

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

  9. bzoj 3687 简单题——bitset

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

随机推荐

  1. python 使用set对list去重,并保持list原来顺序

    list_one=re.findall(r"^\s{0}[A-Za-z]*\b", txt,re.M) #匹配一级目录 addr_to = list(set(list_one))a ...

  2. linux 进程在后台执行

    把任务放到后台用 & 和 Ctrl+z 让后台任务从停止状态转为运行状态用 bg %N 把后台任务调回到前台用 fg %N 查看所有任务用jobs https://www.cnblogs.co ...

  3. Android 数据库 ObjectBox 源码解析

    一.ObjectBox 是什么? greenrobot 团队(现有 EventBus.greenDAO 等开源产品)推出的又一数据库开源产品,主打移动设备.支持跨平台,最大的优点是速度快.操作简洁,目 ...

  4. python异常列表

    http://www.runoob.com/python/python-exceptions.html https://www.cnblogs.com/zhangyingai/p/7097920.ht ...

  5. HDU 4696 Answers (脑补+数形结合)

    题意 给一个图,每个点的出度为1,每个点的权值为1或者2.给Q个询问,问是否能找到一条路径的权值和M. 思路 由于每个点的出度为1,所以必然存在环.又因为c[i]只能取1或者2,可以组成任意值,所以只 ...

  6. iptables详解(8):iptables扩展模块之state扩展

    当我们通过http的url访问某个网站的网页时,客户端向服务端的80端口发起请求,服务端再通过80端口响应我们的请求,于是,作为客户端,我们似乎应该理所应当的放行80端口,以便服务端回应我们的报文可以 ...

  7. C# ASP.NET 验证码

    使用C# ASP.NET 获取 验证码的代码书写 一般都采用异步 点击 前台验证码图片 请求一次 : 前台图片代码: <img id="imgvalidatecode" sr ...

  8. CF445

    题解: xjb乱判断一下就可以了 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; int n, ...

  9. web应用后台发生的事

    浏览器里输入网址后浏览器会通过访问的域名找出其IP地址,给Web服务器发送一个HTTP请求,得到一个服务的永久重定向响应,然后浏览器跟踪重定向地址,发送另一个请求,服务器接收到获取请求,然后处理并返回 ...

  10. 重构Java代码的既有设计-影片出租店

    案例:计算每位顾客的消费金额并打印详细信息.顾客租赁了哪些影片,租期多长,根据租赁时间和影片类型计算出费用.影片分为3类:儿童片,新片,普通片.此外需计算该顾客的积分. Movie: public c ...