【luogu P3175】按位或(min-max容斥)(高维前缀和 / FWT)

这篇博客介绍了如何解决luogu P3175题目,通过运用min-max容斥原理来分析问题。作者探讨了如何利用高位前缀和和快速傅里叶变换(FWT)来计算期望次数,以使数变为2^n-1。博客中还提到了在计算过程中需要注意的边界条件和错误处理方法。
摘要由CSDN通过智能技术生成

按位或

题目链接:luogu P3175

题目大意

有一个数 0 你一开始,然后每次你可以与上一个数 0~2^n-1 中的,每个数有它被你选择的概率。
然后问你期望要弄多少次才能使得这个数变成 2^n-1。

思路

首先这个弄成 2 n − 1 2^n-1 2n1 显然不好弄,我们考虑一个神奇的东西,就是 min-max 容斥。
因为这个 min ⁡ , max ⁡ \min,\max min,max 它不一定要是最大值最小值,它可以是最早出现最晚出现之类的。
所以我们可以视作最后一次操作让 2 n − 1 2^n-1 2n1 完成是最晚出现,那最早出现就是第一次开始拼 2 n − 1 2^n-1 2n1
那再看回去 min-max 容斥的式子: max ⁡ ( T ) = ∑ T ⊂ S ( − 1 ) ∣ S ∣ min ⁡ ( S ) \max(T)=\sum\limits_{T\subset S}(-1)^{|S|}\min(S) max(T)=TS(1)Smin(S)

那我们就要求出每个子集第一次被覆盖到的期望时间,设为 f ( S ) f(S) f(S)
考虑生成函数,对于每次如果覆盖到就结束,没有覆盖到就要继续,然后没有覆盖到相当于覆盖了 S S S</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值