bzoj 3687 bitset的运用】的更多相关文章

题目大意: 小呆开始研究集合论了,他提出了关于一个数集四个问题:1. 子集的异或和的算术和.2. 子集的异或和的异或和.3. 子集的算术和的算术和.4. 子集的算术和的异或和.目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把这个问题交给你,未来的集训队队员来实现.[输入格式]从 xor.in 中输入数据第一行,一个整数 n.第二行,n 个正整数,表示 a1, a2, …, an[输出格式]输出到 xor.out 中一行,包含一个整数,表示所有子集和的异或和.[样例输入]…
3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子集的异或和的异或和. 3.子集的算术和的算术和. 4.子集的算术和的异或和.     目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把 这个问题交给你,未来的集训队队员来实现. Input 第一行,一个整数n.…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3687 关于 bitset :https://blog.csdn.net/snowy_smile/article/details/79120063 https://blog.csdn.net/liushu1231/article/details/8844631 不知为何,上面的可以 A ,下面的会 WA . #include<cstdio> #include<cstring>…
题意 给定一个正整数集,求所有子集算术和的异或和   题解 每次加入一个元素x,用原集合a xor (a<< x) 然后每一个值统计一下 bitset看起来很优越,是一个能位运算的布尔数组 #include<bitset> #include<stdio.h> int n,sum,ans; using namespace std; bitset<>a; int main(){ scanf("%d",&n); a[]=; ;i<…
传送门 解题思路 设\(f(i)\)表示和为\(i\)时的方案数,那么转移方程为\(f(i)+=f(i-x)\),\(x\)为当前枚举到的数字,这样做是\(O(n\sum a_i)\)的,考虑优化.发现最后要的并不是方案数,最后的奇偶性,那么转移方程转化为\(f(i)^=f(i-x)\),这样可以用\(bitset\)优化,时间复杂度\(O(\frac{n \sum a_i}{32})\). 代码 #include<iostream> #include<cstdio> #inclu…
bitset维护某个和是否存在. bit<<x:所有子集的和+x. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<bitset> #define maxn 2000050 using namespace std; bitset <maxn> bit; ,sum=; int main() { scanf(]…
其实并不怎么会用,有一次有位学长提到了这个名字,就这么取题目了. 1.BZOJ 3687 简单题 求子集的算术和的异或和 http://www.lydsy.com/JudgeOnline/problem.php?id=3687 我们并不需要知道每个数(和)出现了多少次,只需知道它出现了奇数次还是偶数次,于是用一个二进制串表示.初始化dp[0]=1; 加进一个数x,在原先集合的基础上,每个数+x出现的次数会++,就直接异或上集合左移x //Twenty #include<cstdio> #inc…
转载于http://blog.csdn.net/creationaugust/article/details/513876231000:A+B 1001:平面图最小割,转对偶图最短路 1002:矩阵树定理,也可以通过推矩阵的递推关系得到递推式 1003:最短路+DP 1007:半平面交 1008:组合数学,需要高精 1010:斜率优化/四边形不等式推决策单调性 1012:线段树 1014:Splay维护字符串的Hash值 1016:矩阵树定理,相同权值压联通块,对一个联通块用一次矩阵树定理计算方…
由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是 否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1 ,2,3选出的这两个数可以是同一个位置的数 Input 第一行两个数n,m 后面一行n个数表示ai 后面m行每行四个数…
BZOJ 洛谷 删掉的数即三个区间数的并,想到bitset:查多个区间的数,想到莫队. 考虑bitset的每一位如何对应每个数的不同出现次数.只要离散化后不去重,每次记录time就可以了. 但是如果对所有询问开一个bitset会MLE.但是我们可以开M个bitset,每次处理M次询问. 注意莫队修改时要先Add后Subd,否则tm在中间会出现负值导致RE.原来更新顺序会这样... //309796kb 58456ms #include <cmath> #include <cstdio&g…