用$ Min-Max$容斥之后要推的东西少了好多

无耻的用实数快读抢了BZOJ、Luogu、LOJ三个$ OJ$的Rank 1

即将update:被STO TXC OTZ超了QAQ

题意:集合$ [0,2^n)$中每次以一定给出概率产生一个数,求产生数按位或值为$ 2^n-1$的数字数量期望


$ Solution:$

根据$ Min-Max$容斥,令$ Max(S)$表示所有位中最后一次出现的时间,$Min(S)$表示第一次出现的时间

显然有$ ans=Max(S)$

根据$ Min-Max$容斥有

$ Max(S)=\sum\limits(-1)^{|T|+1}Min(T)$

现在的问题是如何快速求出$ Min(S)$

由于$ Min(S)$的意义是集合$ S$中第一次出现的位置的出现时间的期望

有每次随机到集合$ S$中某一位的概率为:

$ \sum\limits_{T \cap S \neq \emptyset}P_T$

其中$ P_T$是产生$ T$这个数的概率

因此可以得知

$ Min(S)=\frac{1}{\sum\limits_{T \cap S \neq \emptyset}P_T}$

其中和原集有交可以转化成不属于原集的补集

求原集的补集可以用$ FMT/FWT$优化,时间复杂度$ O(n·2^n)$


$ my \ code:$

#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define rt register int
#define ll long long
using namespace std;
inline ll read(){ll x = 0; char zf = 1; char ch = getchar();while (ch != '-' && !isdigit(ch)) ch = getchar();if (ch == '-') zf = -1, ch = getchar();while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar(); return x * zf;
}
void write(ll y){if(y<0)putchar('-'),y=-y;if(y>9)write(y/10);putchar(y%10+48);}
void writeln(const ll y){write(y);putchar('\n');}
int i,j,k,m,n,x,y,z,cnt,tot;
double a[1048577];
namespace fast_IO{const int IN_LEN=10000000,OUT_LEN=10000000;char ibuf[IN_LEN],obuf[OUT_LEN],*ih=ibuf+IN_LEN,*oh=obuf,*lastin=ibuf+IN_LEN,*lastout=obuf+OUT_LEN-1;inline char getchar_(){return (ih==lastin)&&(lastin=(ih=ibuf)+fread(ibuf,1,IN_LEN,stdin),ih==lastin)?EOF:*ih++;}inline void putchar_(const char x){if(oh==lastout)fwrite(obuf,1,oh-obuf,stdout),oh=obuf;*oh++=x;}inline void flush(){fwrite(obuf,1,oh-obuf,stdout);}
}
using namespace fast_IO;
#define getchar() getchar_()
double readf(){char ch=getchar();while(!isdigit(ch))ch=getchar();double value=ch-'0';ch=getchar();while(isdigit(ch)){value=value*10+ch-'0';ch=getchar();}if(ch=='.'){double cur=0.1;ch=getchar();while(isdigit(ch)){value+=cur*(ch-'0');cur*=0.1;ch=getchar();}}return value;
}
int main(){tot=read();n=1<<tot;for(rt i=0;i<n;i++)a[i]=readf();for(rt i=0;i<tot;i++)for(rt j=0;j<n;j++)if(j>>i&1)a[j]+=a[j^(1<<i)];double ans=0;for(rt i=0;i<tot;i++)if(a[n-1^(1<<i)]==1)return puts("INF"),0;for(rt i=0;i<n;i++)if(a[i]<1-0.0000001){if(__builtin_popcount(i)+tot&1)ans+=1.0/(1.0-a[i]);else ans-=1.0/(1.0-a[i]);}printf("%.10f",ans);return 0;
}

转载于:https://www.cnblogs.com/DreamlessDreams/p/10064025.html

LOJ#2127「HAOI2015」按位或相关推荐

  1. 【LOJ2127】「HAOI2015」按位或

    题意 刚开始你有一个数字 \(0\),每一秒钟你会随机选择一个 \([0,2^n-1]\) 的数字,与你手上的数字进行或操作.选择数字 \(i\) 的概率是 \(p[i]\) . 问期望多少秒后,你手 ...

  2. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...

  3. Loj #3055. 「HNOI2019」JOJO

    Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...

  4. LOJ#2230. 「BJOI2014」大融合

    LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...

  5. loj#2143. 「SHOI2017」组合数问题

    loj#2143. 「SHOI2017」组合数问题 题目描述 Solution 考虑转化一下我们要求的东西. ∑i=0n(nkik+r)=∑i=0n(nki)[i≡r(modk)]\sum_{i=0} ...

  6. LOJ#2542. 「PKUWC2018」随机游走

    LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集 ...

  7. LOJ#2145. 「SHOI2017」分手是祝愿

    LOJ#2145. 「SHOI2017」分手是祝愿 题目描述 Solution 首先有一个结论: 灯的状态序列a1,a2...ana_1,a_2...a_na1​,a2​...an​唯一对应了一个最优 ...

  8. Loj #2568. 「APIO2016」烟花表演

    Loj #2568. 「APIO2016」烟花表演 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连 ...

  9. Loj #2585. 「APIO2018」新家

    Loj #2585. 「APIO2018」新家 题目描述 五福街是一条笔直的道路,这条道路可以看成一个数轴,街上每个建筑物的坐标都可以用一个整数来表示.小明是一位时光旅行者,他知道在这条街上,在过去现 ...

最新文章

  1. Kaggle HousePrice : LB 0.11666(排名前15%), 用搭积木的方式(一,原理)
  2. SpringMVC 课纲
  3. java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面
  4. CentOS6挂载读写NTFS分区(ntfs-3g)
  5. Bootstrap概述
  6. 【英语学习】【医学】有机化学 - 烷的命名
  7. Cookie工具类-cookieUtil.js
  8. php 字节码查看,PHP字节码缓存和内置服务器
  9. Hive vs HBase (配合使用才是最佳方案)
  10. 使用Jquery对数组进行迭代、排序、去重! 美男子加油!!!
  11. 用数据告诉你出租车资源配置是否合理
  12. Redis RU330课程 Redis Security 第3周学习笔记
  13. 自己写的一个校验IP、IP掩码、IP段的方法封装到了JQ中,方便了使用者的使用...
  14. 苹果将于18日举行新品发布会
  15. SDN的基本概念和基本架构
  16. 头文件中能否进行函数的定义
  17. Deep Audio-Visual Speech Recognition翻译
  18. [立业]想做老板?先做10道题!
  19. 高效开发(一):装机必备
  20. c语言程序设计 张曙光,第6章C语言程序设计(张曙光)教材各章习题解答.doc

热门文章

  1. 学python需要哪些基础-python 学习,需要有哪些基础呢?
  2. python是什么怎么用-什么是python items函数?怎么使用它?
  3. python在财务领域的应用-浅谈财务智能化在实际工作中的运用
  4. python在金融工程中的用途-金融工程现在用python多吗?
  5. python基础第三章选择结构答案-python3 学习笔记(二)选择结构、循环结构
  6. 自学python可以找到好的工作吗-通过自学python能找到工作吗
  7. python基础知识选择题-python基础知识练习题(二)
  8. python的用途实例-python中pass语句意义与作用(实例分析)
  9. python能做什么游戏好-用Python可以做哪些有意思的小游戏呢?
  10. LA3942 Remember the Word(Trie+DP)