P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)
Posted 繁凡さん
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)相关的知识,希望对你有一定的参考价值。
整理的算法模板合集: ACM模板
实际上是一个全新的精炼模板整合计划
Weblink
https://www.luogu.com.cn/problem/P3175
Problem
刚开始你有一个数字 0 0 0,每一秒钟你会随机选择一个 [ 0 , 2 n − 1 ] [0,2^n-1] [0,2n−1] 的数字,与你手上的数字进行按位或。选择数字 i i i 的概率是 p i p_i pi 。保证 0 ≤ p i ≤ 1 0\\leq p_i \\leq 1 0≤pi≤1, ∑ p i = 1 \\sum p_i=1 ∑pi=1 。问期望多少秒后,你手上的数字变成 2 n − 1 2^n-1 2n−1。
Solution
分析题目,我们每次选择的数是在 [ 0 , 2 n − 1 ] [0,2^n-1] [0,2n−1] 的数,进行按位或运算,显然无论如何选择,手里的数都不会大于 2 n − 1 2^n-1 2n−1。我们希望最后手里的数变为 2 n − 1 2^n-1 2n−1,即一个 n n n 位二进制数 x x x 中所有 n n n 位全部变成 1 1 1,因此我们可以将问题抽象成,有一个 n n n 位二进制数 x x x,开始 n n n 位上全是 0 0 0,我们每次选择一个数,可以使得 x x x 发生变化,最后 x x x 的所有位全部变为 1 1 1 的期望选择次数(时间)。
然后因为选择数字 i i i 的概率为 p i p_i pi,我们每次选择数 i i i,使得该二进制数发生一些变化,直到所有二进制数全部变为 1 1 1,显然我们可以联想到一个类似的问题模型:有 n ≤ 20 n\\le 20 n≤20 种牌,每种牌无限张,得到第 i i i 种牌的概率为 p i p_i pi,问每张牌均至少拥有一张的期望购买次数(时间)。即 HDU4336 Card Collector,我们发现抽象出来问题模型之后,两个问题的模型几乎一模一样!
我们回想 HDU4336 Card Collector 是怎么解决的, Min - Max \\text{Min\\ -\\ Max} Min - Max 容斥!
我们设 a i a_i ai 为得到卡片 i i i 的期望时间,集合 S = { a i } S=\\{a_i\\} S={ai}。显然 max { S } \\max\\{S\\} max{S} 为得到最后一张卡片的期望时间(此时我们已经得到了所有的卡片,游戏结束),则 min { S } \\min\\{S\\} min{S} 为得到第一张卡片的期望时间。
显然有 Min - Max \\text{Min\\ -\\ Max} Min - Max 容斥:
max ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ + 1 min ( T ) min ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ + 1 max ( T ) \\max(S)=\\sum_{T\\subseteq S}(-1)^{|T|+1}\\min(T)\\\\\\min(S)=\\sum_{T\\subseteq S}(-1)^{|T|+1}\\max(T) max(S)=T⊆S∑(−1)∣T∣+1min(T)min(S)=T⊆S∑(−1)∣T∣+1max(T)
我们只需要直接爆搜计算集合 S S S 的所有子集 T T T 的 min ( T ) = 1 ∑ i ∈ T p i \\min(T)=\\frac 1{\\sum\\limits_{i\\in T}p_i} min(T)=i∈T∑pi1 即可在 O ( 2 n ) O(2^n) O(2n) 的时间复杂度下求得 max ( S ) \\max(S) max(S),即为答案。
显然两个题目的模型是一模一样的,我们考虑使用 Min-Max \\text{Min-Max} Min-Max 容斥解决本题。
类似的,我们设 a k a_k ak 为二进制数 x x x 的第 k k k 位变为 1 1 1 的期望时间,集合 S = { a i } S=\\{a_i\\} S={ai},显然这里的 S S S 为全集,也就是二进制数 x x x 的全部 n n n 位, S S S 的子集 T T T,表示某几位,也就是二进制数 x x x 的 y ≤ n y\\le n y≤n 位。
显然 max { S } \\max\\{S\\} max{S} 为二进制数 x x x 的所有位均为 1 1 1 所有的期望时间, min { S } \\min\\{S\\} min{S} 为二进制数 x x x 第一次有位数变为 1 1 1 的期望时间。
max ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ + 1 min ( T ) \\max(S)=\\sum_{T\\subseteq S}(-1)^{|T|+1}\\min(T) max(S)=T⊆S∑(−1)∣T∣+1min(T)
同样的,我们只需要计算集合 S S S 的所有子集 T T T 的 min ( T ) \\min(T) min(T) 即可。
显然根据期望公式有:
min ( T ) = ∑ i = 1 + ∞ i × P ( min ( T ) = i ) \\min(T)=\\sum\\limits^{+\\infty}_{i=1}i\\times P(\\min(T)=i) min(T)=i=1∑+∞i×P(min(T)=i)
其中 P ( min ( T ) = i ) P(\\min(T)=i) P(min(T)=i) 表示在第 i i i 秒,集合 T T T 中第一次出现了 1 1 1 的概率,这也就意味着前 i − 1 i−1 i−1 秒内,每一秒,集合 T T T 中均没有出现 1 1 1,即集合 T T T 在全集 S S S 的补集 W W W 中出现了 1 1 1( W = ∁ S T , W ∩ T = ∅ , W + T = S W=\\complement_ST,W\\cap T=\\varnothing,W+T=S W=∁ST,W∩T=∅,W以上是关于P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)的主要内容,如果未能解决你的问题,请参考以下文章
P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)
[HAOI2015] 按位或 - Min-Max容斥,快速莫比乌斯变换
bzoj 4036 [HAOI2015]按位或——min-max容斥+FMT