按位或:多项式,FWT,min-max容斥
Description:
刚开始你有一个数字0,每一秒钟你会随机选择一个$[0,2^n)$的数字,与你手上的数字进行或(C++, C 的
|, Pascal 的or)操作。选择数字i的概率是$p_i$ (保证$p \le p_i \le 1$,$\sum p_i =1$ )问期望多少秒后,你手上的数字变成$2^n-1$。($n \le 20$)
日常:想->问NC大聚聚这题有什么新知识点->学知识点->做->调。。。
全是新知识点,难度也都不低。一个知识点一道题也不知道自己是不是记住了。。。
最近写博客,基本每新写一道题的题解,就要新建至少一个Tag。。。
扯远了。
既然题目里都或起来了,那么就不难想到FWT。
但是连式子都没有FWT干什么啊???
然而关于集合期望这类题貌似是有一个套路的,就是min-max容斥。
min-max容斥的基本形式是:$max(S)=\sum\limits_{\phi \neq T \subseteq S} (-1)^{|T|+1} min(T)$
而且还满足于期望。即在min与max外套上一个E()依旧成立
这里的max是指在某一特定排序规则下,S集合中最大的元素。这种大小排序规则可以自己规定,只要有确定的大小关系可以用大小于号给所有元素排列就好。
把min和max倒置结果也是成立的。很好说,因为大小关系是可以你自己来定义的,你只要把关系反过来min和max就反过来了。
min-max容斥的神奇之处在于,它把求最大值与最小值之间进行了转换,当其中一者难求而另一种好求的时候,就可以进行转换。
对于这道题目,我们要求的是「全集的最后一个选中的元素」。直接求不能求,所以换求法。
设max(S)表示S集合中出现的最晚的元素出现的时间,min反之。
那么就能得到$max(2^n-1)=\sum\limits_{i=1}^{2^n-1} min(i) \times (-1)^{cntbit(i)+1}$
大多数题目里求出min要比求出max要简单。考虑一下怎么求:
现在我们要求的min(S)就表示期望抓几次能抓到S中含有的至少一个元素。
这不太好想,所谓正难则反,那么我们求期望连续抓几次都不包含T内的元素。这里的T是上面的S的补集。
这样的话要好求一些。根据数学期望知识我们知道,如果抓到T集合及其子集的概率是p,那么期望连续次数就是$\frac{1}{i-p}$(包含断掉之后的那一下)
现在的问题就在于怎么求出一个集合和它所有的子集的总概率。
然后我也不知道怎么想到的我只知道LNC特别巨,你既然是在学FWT你就试试FWT呗。
然后你就发现对原数列进行一次FWT所得到的新的数列的含义就是每个集合及其所有子集的和。
然后。。。就没了。。。
#include<cstdio>
double p[<<],ans;int n,lb[<<];
main(){
scanf("%d",&n);lb[]=;
for(int i=;i<<<n;++i)scanf("%lf",&p[i]),lb[i]=-lb[i^i&-i];
for(int m=;m<<<n;m<<=)for(int i=;i<<<n;i+=m<<)for(int j=i;j<m+i;++j)p[m+j]+=p[j];
for(int i=;i<<<n;++i)ans+=/(+1e--p[i^(<<n)-])*lb[i];printf(ans>1e13?"INF":"%lf\n",ans);
}
一道神奇的代码只有343B的黑题
按位或:多项式,FWT,min-max容斥的更多相关文章
- bzoj4036 [HAOI2015]按位或 状压DP + MinMax 容斥
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4036 题解 变成 \(2^n-1\) 的意思显然就是每一个数位都出现了. 那么通过 MinMa ...
- Min-max 容斥与 kth 容斥
期望的线性性: \[E(x+y)=E(x)+E(y) \] 证明: \[E(x+y)=\sum_i \sum_j(i+j)*P(i=x,j=y) \] \[=\sum_i\sum_ji*P(i=x,j ...
- min-max 容斥
$\min - \max$ 容斥 Part 1 对于简单的$\min - \max$容斥有一般形式,表达为:$\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-1 ...
- [HAOI2015]按位或(min-max容斥,FWT,FMT)
题目链接:洛谷 题目大意:给定正整数 $n$.一开始有一个数字 $0$,然后每一秒,都有 $p_i$ 的概率获得 $i$ 这个数 $(0\le i< 2^n)$.一秒恰好会获得一个数.每获得一个 ...
- 【BZOJ4036】按位或(Min-Max容斥,FWT)
[BZOJ4036]按位或(Min-Max容斥,FWT) 题面 BZOJ 洛谷 题解 很明显直接套用\(min-max\)容斥. 设\(E(max\{S\})\)表示\(S\)中最晚出现元素出现时间的 ...
- BZOJ4036 [HAOI2015]按位或 【minmax容斥 + 期望 + FWT】
题目链接 BZOJ4036 题解 好套路的题啊,,, 我们要求的,实际上是一个集合\(n\)个\(1\)中最晚出现的\(1\)的期望时间 显然\(minmax\)容斥 \[E(max\{S\}) = ...
- bzoj 4036: [HAOI2015]按位或【min-max容斥+FWT】
其实也不是FWT--我也不知道刷FWT专题问什么会刷出来这个东西 这是min-max容斥讲解:https://www.zybuluo.com/ysner/note/1248287 总之就是设min(s ...
- P3175-[HAOI2015]按位或【min-max容斥,FWT】
正题 题目链接:https://www.luogu.com.cn/problem/P3175 题目大意 开始有一个\(n\)位二进制数\(s=0\),每次有\(p_i\)概率选取数字\(i\)让\(s ...
- min-max容斥 hdu 4336 && [BZOJ4036] 按位或
题解: 之前听说过这个东西但没有学 令$max(S)$表示S中编号最大的元素,$min(S)$表示编号中最小的元素 $$max(S)=\sum{T \in S} {(-1)}^{|T|+1} min( ...
随机推荐
- Git下载安装及github基本操作
Windows下Git下载 官网提供的Git下载地址: 官网下载地址,一般直接从官网下载会出现无反应等情况,这里提供windows32和64位版本的百度网盘资源:windows下的Git下载地址.有需 ...
- Ubuntu虚拟机安装VMware Tools
前言 在用VMware安装好Linux虚拟机后,发现在虚拟机下安装的Ubuntu16.04 64位无法进入全屏模式,同时存在物理机和虚拟机之间无法实现文件传输的问题,通过安装VMware Tools得 ...
- JAVA 使用jgit管理git仓库
最近设计基于gitops新的CICD方案,需要通过java读写git仓库,这里简单记录下. JGit是一款pure java的软件包,可以读写git仓库,下面介绍基本使用. 引入jgit maven引 ...
- Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置
说明 本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况. dockerfile-maven-plugin构建镜像配置 <plugin> <groupId>com.spot ...
- hdu 6298 Maximum Multiple (简单数论)
Maximum Multiple Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- mysql重点中的重点---->查询中的关键字优先级
1.from 找到表 2.where 拿着where指定的约束条件,去文件/表中取出一条条记录 3.group by 将取出的一条条记录进行分组group by ,如果没有group by ,则整体作 ...
- 使用SQL语句修改Mysql数据库字符集的方法
使用SQL语句修改Mysql数据库字符集的方法 修改库: alter database [$database] character set [$character_set] collate [$c ...
- SpringMVC生成的验证码图片不显示
近期用SSM框架写一个项目,登录模块需要生成验证码图片,我把相关的代码写好了之后传到 jsp ,但是图片不显示,查看控制台显示404,反复查询了一下代码并没有发现任何问题,代码如下: @Control ...
- WinForm WebBrowser 设置cookie
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static exte ...
- C#中怎样连接数据库并将查询结果转为实体类以及如何加入事务
场景 新建一个程序,需要对数据的表进行查询并将查询结果转换为实体类,然后将多个实体类 再插入到另一个数据库的表中,执行插入的过程中要使用事务. 注: 博客主页: https://blog.csdn.n ...