博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HAOI 2015]按位或
阅读量:5149 次
发布时间:2019-06-13

本文共 1623 字,大约阅读时间需要 5 分钟。

Description

刚开始你有一个数字 \(0\) ,每一秒钟你会随机选择一个 \([0,2^n-1]\) 的数字,与你手上的数字进行或( \(\text{or}\) )操作。选择数字 \(i\) 的概率是 \(p_i\) 。保证 \(0\leq p_i\leq 1\)\(\sum_{i=0}^{2^n-1}p_i=1\) 。问期望多少秒后,你手上的数字变成 \(2^n-1\)

\(1\leq n\leq 20\)

Solution

不妨假设第 \(i\) 秒后状态为 \(S\) 的概率为 \(fp_{i,S}\)

显然 \(i=1\) 时, \(fp_{1,S}=p_S\)

注意到 \(fp\) 会满足这样的关系

\[fp_{i,S} = \sum_{L \subseteq S} \sum_{R \subseteq S}^{} [L \cup R = S] fp_{i-1,L} \times p_R\]

\(U=2^n-1\) ,于是我们可以得到答案就是

\[\sum_{i=1}^\infty i(fp_{i,U}-fp_{i-1,U})\]

其中 \(fp_{i,U}-fp_{i-1,U}\) 表示恰好第 \(i\) 时变为 \(U\) 的概率。

\(FP\)\(fp\) 的莫比乌斯变换,记 \(P\)\(p\) 的莫比乌斯变换。显然 \(FP_{i,S}=P_S^i\)

那么对于集合 \(S\) 在莫比乌斯变换下得到的答案就是

\[\begin{aligned}&\sum_{i=1}^\infty i(P_S^i-P_S^{i-1})\\=&\begin{cases}-(P_S^0 +P_S^1+\cdots+P_S^\infty)&P_S<1\\0&P_S=1\end{cases}\\=&\begin{cases}-\frac{1}{1-P_S}&P_S<1\\0&P_S=1\end{cases}\end{aligned}\]

然后再反演回去直接得到答案即可。复杂度 \(O(n2^n)\)

Code

#include 
using namespace std;const int N = 25, SIZE = (1<<20)+5;const double eps = 1e-7;int bin[N], n;double p[SIZE];void FMT(double *f, int o) { for (int i = 1; i < bin[n]; i <<= 1) for (int j = 0; j < bin[n]; j++) if (i&j) f[j] += f[j^i]*o;}void work() { scanf("%d", &n); bin[0] = 1; for (int i = 1; i <= n; i++) bin[i] = (bin[i-1]<<1); for (int i = 0; i < bin[n]; i++) scanf("%lf", &p[i]); FMT(p, 1); for (int i = 0; i < bin[n]; i++) if (fabs(p[i]-1) <= eps) p[i] = 0; else p[i] = 1./(p[i]-1.); FMT(p, -1); p[bin[n]-1] <= eps ? puts("INF") : printf("%.7lf\n", p[bin[n]-1]);}int main() {work(); return 0; }

转载于:https://www.cnblogs.com/NaVi-Awson/p/9279454.html

你可能感兴趣的文章
nginx + uwsgi 跑python应用
查看>>
asp.net通过基类实现统一脚本和样式的管理
查看>>
『转』Bitdefender Internet Security 2013 – 免费1年
查看>>
pytorch搭建神经网络-第一篇博客
查看>>
Sublime Text 3 快捷键总结(拿走)
查看>>
return,break与continue的区别
查看>>
快排的递归和非递归C++
查看>>
微信公众平台开发(11) 发送客服消息
查看>>
MongoDB之$关键字及$修改器$set $inc $push $pull $pop
查看>>
关于对象
查看>>
CGo中传递多维数组给C函数
查看>>
android 调用系统照相机拍照后保存到系统相册,在系统图库中能看到
查看>>
ActionScript 3.0 宝典(中文PDF下载)
查看>>
Swift入门篇-集合
查看>>
Taffy自动化测试框架Web开发,Python Flask实践详解
查看>>
2019.07.15 年中备忘
查看>>
传统IO与NIO的比较
查看>>
在利用手背扫描图像+K因子 对室内温度进行回归预测时碰到的问题
查看>>
Maven笔记
查看>>
UVa 12661 (单源最短路) Funny Car Racing
查看>>