[BZOJ4036] [HAOI2015]按位或】的更多相关文章

原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4036.html 题目传送门 - BZOJ4036 题意 刚开始你有一个数字 $0$ ,每一秒钟你会随机选择一个 $[0,2^n-1]$ 的数字,与你手上的数字进行 $OR$ (按位或) 操作. 选择数字 $i$ 的概率是 $p_i$ .保证 $0\leq p_i\leq 1$ ,$\sum_{i=0}^{2^n-1}p_i=1$ . 问期望多少秒后,你手上的数字变成 $2^n-1$ . $n\leq…
考虑min-max容斥,改为求位集合内第一次有位变成1的期望时间.求出一次操作选择了S中的任意1的概率P[S],期望时间即为1/P[S]. 考虑怎么求P[S].P[S]=∑p[s] (s&S>0)=1-∑p[s] (s&S==0).做一个高维前缀和即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib>…
题目链接 BZOJ4036 题解 好套路的题啊,,, 我们要求的,实际上是一个集合\(n\)个\(1\)中最晚出现的\(1\)的期望时间 显然\(minmax\)容斥 \[E(max\{S\}) = \sum\limits_{T \subseteq S} (-1)^{|T| + 1}E(min\{T\})\] 那么问题就转化为了求每个集合中最早出现的\(1\)的期望时间 假如在\(k\)时刻出现,那么前\(k - 1\)时刻一定都是取的补集的子集,记\(T\)补集的所有子集概率和为\(P\) \…
传送门:https://lydsy.com/JudgeOnline/problem.php?id=4036 Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal 的or)操作.选择数字i的概率是p[i].保证0<=p[i]<=1,Σp[i]=1问期望多少秒后,你手上的数字变成2^n-1. Input 第一行输入n表示n个元素,第二行输入2^n个数,第i个数表示选到i-1的概率 Output 仅输出一个…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4036 题解 变成 \(2^n-1\) 的意思显然就是每一个数位都出现了. 那么通过 MinMax 容斥,可以把问题转化为对于一个集合 \(S\),求 \(S\) 中至少有一个元素出现的概率. 这个问题等价于求 \(S\) 中没有任何一个元素出现的概率,即出现的数都是 \(S\) 的补集的子集的概率. 这个问可以通过 SoSDP 实现,时间复杂度 \(O(n2^n)\). 关于 SoSDP 这…
[BZOJ4036][HAOI2015]按位或 Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal的or)操作.选择数字i的概率是p[i].保证0<=p[i]<=1,Σp[i]=1问期望多少秒后,你手上的数字变成2^n-1. Input 第一行输入n表示n个元素,第二行输入2^n个数,第i个数表示选到i-1的概率 Output 仅输出一个数表示答案,绝对误差或相对误差不超过1e-6即可算通过.如果无…
bzoj4036 / P3175 [HAOI2015]按位或 是一个 min-max容斥 的板子题. min-max容斥 式子: $ \displaystyle max(S) = \sum_{T\sube S} (-1)^{|T|+1} min(T) $ 并且很优秀的是,它在期望情况下成立! 这个有什么关系呢.. 如果每一位分开考虑,如果第 $ i $ 位变成 1 的期望时间是 $ T(i) $ 那么求的是 $ E(max(T_{1\dots n})) $ 这个可以 min-max容斥 求 $…
[BZOJ4036]按位或(Min-Max容斥,FWT) 题面 BZOJ 洛谷 题解 很明显直接套用\(min-max\)容斥. 设\(E(max\{S\})\)表示\(S\)中最晚出现元素出现时间的期望,\(min\)同理. 那么\(E(max\{S\})=\sum_{T\subseteq S}(-1)^{|T|}E(min\{T\})\) 考虑怎么求\(E(min\{T\})\),很容易发现只需要或上了任何一位就行了. 也就是 \[E(min\{T\})=\frac{1}{\sum_{G\c…
4036: [HAOI2015]按位或 Time Limit: 10 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 746  Solved: 456[Submit][Status][Discuss] Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal 的or)操作.选择数字i的概率是p[i].保证0<=p[i]<=1,Σp[i]=1问期望多少秒…
[luogu 3175] [HAOI2015]按位或 题面 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行按位或运算.问期望多少秒后,你手上的数字变成2^n-1. 分析 前置知识:min-max容斥 记\(\max(S)\)为集合\(S\)中的最大值,\(\min(S)\)为集合\(S\)中的最小值(如果\(S=\emptyset\) ,那\(\max(S)=\min(S)=0\)),那么有 \[\max(S)=\sum _{T\subseteq S}…