BZOJ3687 计算子集和的异或和

题不知道怎么不见了,bzoj上已经没了3687这题了

题意:给你一个n 然后输入n个数 求这n个数的所有子集的和的异或和

思路:用bitset记录某个数是否在子集和中出现,利用bitset对二进制位的快速大量操作(移位),通过已经求出的子集和求出剩余的子集和

参考代码:

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <string.h>
 4 #include <map>
 5 #include <bitset>
 6 #include <stdio.h>
 7 #include <vector>
 8 #define ll long long
 9 using namespace std;
10
11 int main()
12 {
13     ll n,x,ans,sum;
14     while(~scanf("%I64d",&n))
15     {
16         bitset<200005>b;
17         b[0]=1;
18         sum=ans=0;
19         for(ll i=0; i<n; i++)
20         {
21             scanf("%I64d",&x);
22             b^=b<<x;
23             sum+=x;
24         }
25         for(ll i=1; i<=sum; i++)
26         {
27             if(b[i]) ans^=i;
28         }
29         printf("%I64d\n",ans);
30     }
31     return 0;
32 }
时间: 2024-10-22 16:59:59

BZOJ3687 计算子集和的异或和的相关文章

bzoj3687简单题*

bzoj3687简单题 题意: 给个集合,求所有子集的元素和的异或和.集合元素个数≤1000,整个集合的元素和≤2000000 题解: 用bitset维护每个子集元素和的个数是奇数还是偶数.每次读入一个元素,则bs^=bs<<a[i],意思是将之前所有的子集和加上这个新的元素,然后与已有的子集和异或判断奇偶.最后ans为所有存在个数为奇数的子集和的异或和.注意本题数据有误,不能快速读入,必须用scanf否则会RE…… 代码: 1 #include <cstdio> 2 #inclu

24点计算问题

问题描述:N个1到13之间的自然数,找出所有能通过加减乘除计算(每个数有且只能用一次)得到24的组合? 计算24点常用的算法有三种,第一种方法:任取两个数,计算后,将结果放回去,再从剩下的数中任取两个,如此反复直到只剩下一个数:第二种方法:先构建前缀/后缀表达式,再计算该表达式:第三种方法是用集合保存中间结果,集合间两两进行合并计算得到新集合(或者对给定的一个集合,对其所有的子集合进行合并计算).本博文首先采用第一种方法.六种操作符:ADD(加).SUB(减).MUL(乘).DIV(除).RSU

使用异或运算符对整数进行加密

一:什么是∧运算符: 二元 ^ 运算符是为整型和 bool 类型预定义的.对于整型,^ 将计算操作数的按位“异或”.对于 bool 操作数,^ 将计算操作数的逻辑“异或”:也就是说,当且仅当只有一个操作数为 true 时,结果才为 true. 二:在进行异或运算规则: 如两个二进制数的相应位都为1 或者二进制数的相应位都为0,则返回0:如果两个二进制数相应位一个为0,另一个为1则返回1: 三:异或运算的执行过程: 加密:将23进行异或运算加密,key为15 数值23转为二进制为: 10111 

C#运算符之与,或,异或及移位运算

1.剖析异或运算(^) 二元 ^ 运算符是为整型和 bool 类型预定义的.对于整型,^ 将计算操作数的按位“异或”.对于 bool 操作数,^ 将计算操作数的逻辑“异或”:也就是说,当且仅当只有一个操作数为 true 时,结果才为 true. 数值运算举例 按位异或的3个特点:(1) 0^0=0,0^1=1  0异或任何数=任何数(2) 1^0=1,1^1=0  1异或任何数-任何数取反(3) 1^1=0,0^0=0  任何数异或自己=把自己置0 例如:10100001^00010001=10

数据挖掘十大经典算法

一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足: 2) 在树构造过程中进行剪枝: 3) 能够完成对连续属性的离散化处理: 4) 能够对不完整数据进行处理. C4.5算法有如下优点:产生的分类规则易于理解,准确率较高.其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导

[转]林达华推荐的几本数学书

http://blog.csdn.net/lqhbupt/article/details/32106217 Dahua Lin早在几年前就已经冒尖出来了,现在在MIT攻读博士学位,前途不可限量.他总是有无穷的精力,学习,同时几篇几篇的写paper,几万行几万行的写code,几万字几万字的写blog.他扎实的数学功底和相关知识的功底,以及深睿的洞察和理解问题的能力,注定他将在machine learning和computer vision等相关领域取得大量的成果,甚至是突破性的成果.期待他在这些领

和机器学习和计算机视觉相关的数学(转载)

1. 线性代数 (Linear Algebra): 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要.这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的.我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是Introduction to Linear Algebra (3rd Ed.)  by Gilbert Strang.这本书是MIT的线性代数课使用的教材,也是被很多其它大学选用的经典教材.它的难度适中,讲解清晰,重要

[转]和机器学习和计算机视觉相关的数学

http://blog.sina.com.cn/s/blog_6833a4df0100nazk.html 1. 线性代数 (Linear Algebra): 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要.这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的.我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是 Introduction to Linear Algebra (3rd Ed.) by Gilbert Stra

林达华推荐的几本数学书

林达华推荐的几本数学书 转自:http://dahua.spaces.live.com/default.aspx 1. 线性代数 (Linear Algebra): 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要.这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的.我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是 Introduction to Linear Algebra (3rd Ed.)  by Gilbert