正题

题目链接:https://www.luogu.com.cn/problem/P3175


题目大意

开始有一个nnn位二进制数s=0s=0s=0,每次有pip_ipi​概率选取数字iii让sss或上这个数字iii,求期望多少次能够让sss的nnn个位都变为111。


解题思路

因为是或所以我们只关心最后一个选中的数,设第iii位选中的期望次数为E(i)E(i)E(i)的话答案就是max{E(i)}max\{E(i)\}max{E(i)}。

又是期望又是maxmaxmax所以可以直接上min-max\text{min-max}min-max容斥,答案就是
∑T∈Smin{E(i)}(i∈T)∗(−1)∣T∣+1\sum_{T\in S}min\{E(i)\}(i\in T)*(-1)^{|T|+1}T∈S∑​min{E(i)}(i∈T)∗(−1)∣T∣+1

算这个东西的话也就是如果我们选中一个与TTT有交集的数就可以退出了。期望次数=1/期望概率。所以我们直接算期望概率

也就是我们要算所有∑G∩T≠∅pG\sum_{G\cap T\neq \varnothing}p_{G}∑G∩T​=∅​pG​。GGG和TTT的交集非空就去掉所有交集为空的,交集为空的就是TTT的补集的子集和。

子集和的话就是直接拿ppp出来跑一次ororor的FWT\text{FWT}FWT的结果就是子集和了。

时间复杂度O(n2n)O(n2^n)O(n2n)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1<<21;
const double eps=1e-8;
int n;double cnt[N],p[N],ans;
void FWT_or(double *f,int op){for(int p=2;p<=n;p<<=1)for(int k=0,len=p>>1;k<n;k+=p)for(int i=k;i<k+len;i++)f[i+len]+=f[i]*op;return;
}
int main()
{scanf("%d",&n);cnt[0]=-1;n=1<<n;for(int i=0;i<n;i++)scanf("%lf",&p[i]);FWT_or(p,1);for(int i=0;i<n;i++){if(i)cnt[i]=-cnt[i-(i&-i)];double e=1-p[(n-1)^i];if(fabs(e)<eps)continue;ans+=cnt[i]*(1.0/e);}if(ans<eps)printf("INF");else printf("%.10lf",ans);
}

P3175-[HAOI2015]按位或【min-max容斥,FWT】相关推荐

  1. P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P3175 Prob ...

  2. 【HAOI2015】按位或【Min-Max容斥】【FWT】

    传送门 题意:开始时你有一个数000,每次选出[0,2n−1][0,2^n-1][0,2n−1]中的一个数进行按位或,每个数选中的概率给定.求得到2n−12^n-12n−1的期望操作次数. 1≤n≤2 ...

  3. P3175 [HAOI2015]按位或

    传送门 一如既往膜拜shadowice巨巨 前置姿势我就没一个会的-- //minamoto #include<bits/stdc++.h> #define R register #def ...

  4. min-max 容斥

    $\min - \max$ 容斥 Part 1 对于简单的$\min - \max$容斥有一般形式,表达为:$\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-1 ...

  5. P5643-[PKUWC2018]随机游走【min-max容斥,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P5643 题目大意 给出nnn个点的一棵树,一个人从点xxx开始随机游走,然后QQQ次询问给出一个点集SSS,求期望 ...

  6. P4707-重返现世【dp,数学期望,扩展min-max容斥】

    正题 题目链接:https://www.luogu.com.cn/problem/P4707 题目大意 nnn个物品,每次生成一种物品,第iii个被生成的概率是pim\frac{p_i}{m}mpi​ ...

  7. 51nod1355-斐波那契的最小公倍数【min-max容斥】

    正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1355 题目大意 定义fif_ifi​表示斐波那契的第iii项,给出一个大 ...

  8. hdu4336-Card Collector【min-max容斥,期望概率】

    正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题目大意 每次获得第iii张牌的概率为pip_ipi​(每次只能获得一张),期望多少回合后 ...

  9. [集训队作业2018]小Z的礼物(min-max容斥,插头dp)

    传送门 这种求 "取到所有物品的期望时间" 的题一般都用 min−maxmin-maxmin−max容斥 解决: 设t(i,j)t(i,j)t(i,j)为取到格子(i,j)(i,j ...

最新文章

  1. 计算机安装两个键盘会怎样,外设门诊:一个键盘能否连接两个接收器?
  2. 骚操作!昨晚停网,我写了一段Python代码破解了隔壁小姐姐的wifi密码...
  3. dos下操作mysql数据库常用命令
  4. Git的使用_思维导图
  5. centos6.9下rpm方式安装mysql后mysql服务无法启动
  6. java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
  7. Android 使用POI导出Excel表格
  8. 【CodingNoBorder - 10】无际软工队 - 求职岛:ALPHA 阶段事后分析
  9. 山东省教师教育网-学习课程
  10. 让我们一起来做软件专利流氓吧
  11. Jetson Nano系列教程3-生死看淡,不服就干之GPIO
  12. RAID 磁盘阵列与阵列卡
  13. 泛函分析复习笔记(一)度量空间
  14. 以太坊平台增加类 CrytoNote 环签名
  15. HEVC代码学习35:xEncodeCU函数
  16. 小米汽车设计图纸泄露,官方称非最终文件;微软裁员遣散费高达8亿美元,人均获赔54万元;苹果暂停自研Wi-Fi芯片|极客头条...
  17. 5 光线/二次曲面 相交和映射
  18. 南邮 OJ 1531 A ? Sixth Grade Math
  19. 防火墙Failover故障切换
  20. 利用OpenCV获取图片上某一点的颜色HSV值

热门文章

  1. shell grep 变量_老司机给出的关于 shell 脚本的8个建议,必收!
  2. 国家开放大学计算机基础实训项目一,国家开放大学电大专科《微机系统与维护》网络课实训11及实训12作业及答案...
  3. leetcode134. 加油站
  4. [JavaWeb-Servlet]Servlet3.0注解配置
  5. [C++11]指针空值类型nullptr
  6. [蓝桥杯2017初赛]贪吃蛇长度-模拟(水题)
  7. 蓝桥杯真题-连号区间数-枚举
  8. C++map容器-大小和互换
  9. C++map容器-构造和赋值
  10. SQL9 查找除复旦大学的用户信息(数据库否定语句写法)