bzoj4036[HAOI2015]set 按位或
Vfk的集合幂级数论文的例题….随机集合并为全集的期望集合数….这篇题解里的东西基本来自vfk的论文.
首先根据期望的线性性,我们把需要走第1步的概率(一定为1)加上需要走第2步的概率(等于走了第一步之后没有得到全集的概率)加上需要走第3步的概率(等于走了两步之后没有得到全集的概率)….一直加到需要走正无穷步的概率就是期望的步数.那么走了x步之后没有得到全集的概率等于走了x步之后得到不是全集的集合的概率之和.那么我们用集合并卷积定义乘法,把给出的概率视作集合幂级数,求集合幂级数的等比数列之和,把除了全集一项的其他项的值加起来就是答案.
集合幂级数的莫比乌斯变换和莫比乌斯反演:从f[]数组求得F[]数组,使得F[x]=sigma{f[j],j&x==j},F[]称作f[]的莫比乌斯变换,f[]称作F[]的莫比乌斯反演.
集合幂级数的等比数列之和不容易直接求,但集合幂级数的莫比乌斯变换的等比数列之和易求,而且集合幂级数的莫比乌斯变换的等比数列之和就是集合幂级数的等比数列之和的莫比乌斯变换,我们莫比乌斯反演回来就得到了集合幂级数的等比数列之和.
那么我们只要能快速求解集合幂级数的莫比乌斯反演和莫比乌斯变换,问题就解决了.
Vfk论文里的快速莫比乌斯变换(FMT):
for(i=;i<n;++i)
for(j=;j<(<<n);++j)
if(j&(<<i))f[j]+=f[j^(<<i)];
快速莫比乌斯反演:
for(i=;i<n;++i)
for(j=;j<(<<n);++j){
if(j&(<<i))f[j]-=f[j^(<<i)];
两个过程基本相同,快速反演相当于把快速变换的过程倒了过来.
我们直接在f数组上运算,算法结束后f数组中保存原数组的莫比乌斯变换或莫比乌斯反演.
莫比乌斯变换其实相当于n维前缀和,莫比乌斯反演其实相当于n维差分.也可以用DP来理解。集合并卷积还算是集合幂级数中比较良心易懂的东西.
智商着急现场:http://liu-runda.blog.uoj.ac/blog/2360
bzoj4036[HAOI2015]set 按位或的更多相关文章
- 「HAOI2015」按位或
「HAOI2015」按位或 解题思路 : 这类期望题一眼 \(\text{Min-Max}\) 容斥,只需要稍微推一下如何求 \(E(minS)\) 即可. \[ E(minS) = \frac{1} ...
- BZOJ4036 [HAOI2015]按位或 FWT
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4036.html 题目传送门 - BZOJ4036 题意 刚开始你有一个数字 $0$ ,每一秒钟你会随机 ...
- BZOJ4036 HAOI2015按位或(概率期望+容斥原理)
考虑min-max容斥,改为求位集合内第一次有位变成1的期望时间.求出一次操作选择了S中的任意1的概率P[S],期望时间即为1/P[S]. 考虑怎么求P[S].P[S]=∑p[s] (s&S& ...
- BZOJ4036 [HAOI2015]按位或 【minmax容斥 + 期望 + FWT】
题目链接 BZOJ4036 题解 好套路的题啊,,, 我们要求的,实际上是一个集合\(n\)个\(1\)中最晚出现的\(1\)的期望时间 显然\(minmax\)容斥 \[E(max\{S\}) = ...
- [BZOJ4036] [HAOI2015]按位或
传送门:https://lydsy.com/JudgeOnline/problem.php?id=4036 Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数 ...
- bzoj4036 [HAOI2015]按位或 状压DP + MinMax 容斥
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4036 题解 变成 \(2^n-1\) 的意思显然就是每一个数位都出现了. 那么通过 MinMa ...
- LOJ#2127「HAOI2015」按位或
用$ Min-Max$容斥之后要推的东西少了好多 无耻的用实数快读抢了BZOJ.Luogu.LOJ三个$ OJ$的Rank 1 即将update:被STO TXC OTZ超了QAQ 题意:集合$ [0 ...
- 【LOJ】#2127. 「HAOI2015」按位或
题解 听说这是一道论文题orz \(\sum_{k = 1}^{\infty} k(p^{k} - p^{k - 1})\) 答案是这个多项式的第\(2^N - 1\)项的系数 我们反演一下,卷积变点 ...
- 【LOJ2127】「HAOI2015」按位或
题意 刚开始你有一个数字 \(0\),每一秒钟你会随机选择一个 \([0,2^n-1]\) 的数字,与你手上的数字进行或操作.选择数字 \(i\) 的概率是 \(p[i]\) . 问期望多少秒后,你手 ...
随机推荐
- PMP三点
三点估算:悲观36天,可能21天,乐观6天.在16至26天内完成的概率是多少?这个算法是PERT估算最终估算结果=(悲观工期+乐观工期+4×最可能工期)/6=(36+6++4*21)/6=21标准差= ...
- Java8 Hash改进/内存改进
又开新坑o(*≧▽≦)ツ讲讲几个Java版本的特性,先开始Java8, HashMap的改进 HashMap采用哈希算法,先使用hashCode()判断哈希值是否相同,如果相同,再使用equals() ...
- 集合之HashSet(含JDK1.8源码分析)
一.前言 我们已经分析了List接口下的ArrayList和LinkedList,以及Map接口下的HashMap.LinkedHashMap.TreeMap,接下来看的是Set接口下HashSet和 ...
- 工程师常犯的web后台界面用户体验错误
- sql 用户相关命令
查看所有用户 select distinct concat(user, '@', host,';') as userList from mysql.user; select #查找 distinct ...
- vs code安装
vs code是一款文本编辑器,开源,是前端界的vs,而Dreamweaver适合入门. user版本的一些系统分区文件夹无法创建,可能存在语言显示问题.一般用户建议使用system版. 下载链接:h ...
- jdbc工具类2..0
一.创建外部文件 url=jdbc:mysql:///qy66 use=root password=root driver=com.mysql.jdbc.Driver 二.创建工具类 package ...
- CSS 常见的8种选择器 和 文本溢出问题
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>c ...
- Supervisord管理进程实践
今天凑空研究了下Supervisord,这是一款linux进程管理工具,使用python开发,主要用于在后台维护进程(类似master守护进程),可以实现监控进程的状态.自动重启进程等操作,便于一些服 ...
- [BZOJ 3498] [PA 2009] Cakes
Description \(n\) 个点 \(m\) 条边,每个点有一个点权 \(a_i\). 对于任意一个三元环 \((i,j,k)(i<j<k)\),它的贡献为 \(\max(a_i, ...