LOJ#2127「HAOI2015」按位或
用$ 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」按位或相关推荐
- 【LOJ2127】「HAOI2015」按位或
题意 刚开始你有一个数字 \(0\),每一秒钟你会随机选择一个 \([0,2^n-1]\) 的数字,与你手上的数字进行或操作.选择数字 \(i\) 的概率是 \(p[i]\) . 问期望多少秒后,你手 ...
- Loj #3111. 「SDOI2019」染色
Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...
- Loj #3055. 「HNOI2019」JOJO
Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...
- LOJ#2230. 「BJOI2014」大融合
LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...
- loj#2143. 「SHOI2017」组合数问题
loj#2143. 「SHOI2017」组合数问题 题目描述 Solution 考虑转化一下我们要求的东西. ∑i=0n(nkik+r)=∑i=0n(nki)[i≡r(modk)]\sum_{i=0} ...
- LOJ#2542. 「PKUWC2018」随机游走
LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集 ...
- LOJ#2145. 「SHOI2017」分手是祝愿
LOJ#2145. 「SHOI2017」分手是祝愿 题目描述 Solution 首先有一个结论: 灯的状态序列a1,a2...ana_1,a_2...a_na1,a2...an唯一对应了一个最优 ...
- Loj #2568. 「APIO2016」烟花表演
Loj #2568. 「APIO2016」烟花表演 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连 ...
- Loj #2585. 「APIO2018」新家
Loj #2585. 「APIO2018」新家 题目描述 五福街是一条笔直的道路,这条道路可以看成一个数轴,街上每个建筑物的坐标都可以用一个整数来表示.小明是一位时光旅行者,他知道在这条街上,在过去现 ...
最新文章
- Kaggle HousePrice : LB 0.11666(排名前15%), 用搭积木的方式(一,原理)
- SpringMVC 课纲
- java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面
- CentOS6挂载读写NTFS分区(ntfs-3g)
- Bootstrap概述
- 【英语学习】【医学】有机化学 - 烷的命名
- Cookie工具类-cookieUtil.js
- php 字节码查看,PHP字节码缓存和内置服务器
- Hive vs HBase (配合使用才是最佳方案)
- 使用Jquery对数组进行迭代、排序、去重! 美男子加油!!!
- 用数据告诉你出租车资源配置是否合理
- Redis RU330课程 Redis Security 第3周学习笔记
- 自己写的一个校验IP、IP掩码、IP段的方法封装到了JQ中,方便了使用者的使用...
- 苹果将于18日举行新品发布会
- SDN的基本概念和基本架构
- 头文件中能否进行函数的定义
- Deep Audio-Visual Speech Recognition翻译
- [立业]想做老板?先做10道题!
- 高效开发(一):装机必备
- c语言程序设计 张曙光,第6章C语言程序设计(张曙光)教材各章习题解答.doc
热门文章
- 学python需要哪些基础-python 学习,需要有哪些基础呢?
- python是什么怎么用-什么是python items函数?怎么使用它?
- python在财务领域的应用-浅谈财务智能化在实际工作中的运用
- python在金融工程中的用途-金融工程现在用python多吗?
- python基础第三章选择结构答案-python3 学习笔记(二)选择结构、循环结构
- 自学python可以找到好的工作吗-通过自学python能找到工作吗
- python基础知识选择题-python基础知识练习题(二)
- python的用途实例-python中pass语句意义与作用(实例分析)
- python能做什么游戏好-用Python可以做哪些有意思的小游戏呢?
- LA3942 Remember the Word(Trie+DP)