bzoj 4036 集合幂级数】的更多相关文章

集合幂级数其实就是一种集合到数的映射,并且我们针对集合的一些操作(or  xor and specil or )为这种映射定义运算.其中一些东西可以通过某些手段将其复杂度降低. orz vfk /************************************************************** Problem: 4036 User: idy002 Language: C++ Result: Accepted Time:3584 ms Memory:13092 kb **…
BZOJ 2839: 集合计数 Description 一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为\(K\),求取法的方案数,答案模\(1000000007\). Input 一行两个整数\(N,K\) Output 一行为答案. HINK 对于\(100\%\)的数据,\(1≤N≤1000000,0≤K≤N\): 设交集拥有元素集合\(S\)的取法方案数为\(f(S)\),有 \[…
4036: [HAOI2015]按位或 Time Limit: 10 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 746  Solved: 456[Submit][Status][Discuss] Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal 的or)操作.选择数字i的概率是p[i].保证0<=p[i]<=1,Σp[i]=1问期望多少秒…
题目传送门:http://uoj.ac/problem/94 这是一道集合幂级数的入门题目.我们先考虑求出每个点集的连通生成子图个数,记为$g_S$,再记$h_S$为点集$S$的生成子图个数,容易发现,$h_S=2^{size_S}$,其中$size_S$为点集$S$的极大生成子图内的边数.特殊的,$f_{\o}=g_{\o}=0$. 定义集合幂级数的乘法为子集卷积,考虑集合幂级数$h$和$g$的关系,我们可以得到 $$h=1+\sum_{k \geq 1}\frac{g^k}{k!}=1+e^…
Description 你有一个随机数生成器,它会以一定的概率生成[0,2^N-1]中的数,每一个数的概率是由序列A给定的,Pi=Ai/sum(Ai) 现在有一个初始为0的数X,每一轮随机生成一个数v,将X变成X xor v 求X变成0~2^N-1的期望轮数 答案对998244353取模 N<=18,Ai<=1000 Solution 不妨反过来做,f[i]为i到0的期望轮数,显然等价 易得i>0, \[f[i]=1+\sum f[i\ xor\ j]p[j]\] 1移到左边来 \[f[…
Codeforces 题面传送门 & 洛谷题面传送门 Yet another immortal D1+D2 I %%%%%% 首先直接统计肯定是非常不容易的,不过注意到这个 \(k\) 非常小,因此考虑对这个 \(k\) 做点文章.我们考虑每个数被执行了多少次 \(-1\) 操作,设第 \(i\) 个数被执行了 \(b_i\) 次 \(-1\) 操作,那么最终的结果就是 \((a_1-b_1)\oplus(a_2-b_2)\oplus\cdots\oplus(a_n-b_n)\).然后就是比较神…
洛谷题面传送门 首先 \(3^n\) 的做法就不多说了,相信对于会状压 dp+会枚举子集的同学来说不算困难(暴论),因此这篇博客将着重讲解 \(2^nn^2\) 的做法. 首先如果我们把每个 \(a_i\) 看作一个集合幂级数 \(1+x^{a_i}\),那么我们的任务就是把所有这样的集合幂级数做一遍子集卷积对吧.直接做一脸过不去.不过注意到这个式子的形式比较特别,事实上学过多项式&生成函数的同学应该对形如 \(1+x^k\) 的式子特别敏感,因为在生成函数那套理论中有个恒等式 \(\ln(1+…
http://www.lydsy.com/JudgeOnline/problem.php?id=4036 http://blog.csdn.net/lych_cys/article/details/50898726 http://blog.csdn.net/qq_21995319/article/details/49800999 for(int i=1;i<=1;i++) for(int j=1;j<=1;j++) f[i○j]=a[i]*b[j]; 当○为按位或时,这种运算就称为集合并卷积.…
2839: 集合计数 题意:n个元素的集合,选出若干子集使得交集大小为k,求方案数 先选出k个\(\binom{n}{k}\),剩下选出一些集合交集为空集 考虑容斥 \[ 交集为\emptyset = 任意选的方案数-交集\ge 1 的方案数+交集\ge 2的方案数-... \] 交集\(\ge i\)就是说先选出i个元素在交集里,剩下的元素的集合任选 那么就是 \[ \sum_{i=0}^n \binom{n}{i}(2^{2^{n-i}}-1) \] 组合数直接推阶乘和逆元 后面的\(2^{…
Description 对于一个平面上点的集合P={(xi,yi )},定义集合P的面积F(P)为点集P的凸包的面积. 对于两个点集A和B,定义集合的和为: A+B={(xiA+xjB,yiA+yjB ):(xiA,yiA )∈A,(xjB,yjB )∈B} 现在给定一个N个点的集合A和一个M个点的集合B,求2F(A+B). Input 第一行包含用空格隔开的两个整数,分别为N和M: 第二行包含N个不同的数对,表示A集合中的N个点的坐标: 第三行包含M个不同的数对,表示B集合中的M个点的坐标.…