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

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

原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4036.html

题意

  刚开始你有一个数字 $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 20$

题解

  先 FWT 一下 。

  我们称状态 $x$ 为当前停留在 $x$ 的子集中。

  对于状态 $x$ ,每一次停留在 $x$ 的概率为 $p_x$ 。

  所以每一步走出 $x$ 的概率就是 $1-p_x$ 。

  所以走出 $x$ 的期望步数为 $\cfrac{1}{1-p_x}$ 次。

  显然走出 $2^n-1$ 的期望步数为 $\infty$ 。

  但是走入 $2^n-1$ 的期望步数为走出所有其他状态的期望步数。

  所以 UFWT 的结果是负的“走入 $2^n-1$ 的期望步数" 。

  于是判一判就可以了。

代码

#include 
using namespace std;const int N=1<<20;int n;double a[N];void FWT(double a[],int flag){ for (int d=1;d
<<=1) for (int i=0;i
<<1)) for (int j=0;j

  

  

转载于:https://www.cnblogs.com/zhouzhendong/p/BZOJ4036.html

你可能感兴趣的文章
从一个针对ASP.NET MVC框架的Controller.Action的请求处理顺序来说整个请求过程。
查看>>
pandas read excel文件碰到的一个小问题
查看>>
教师发表职称论文须注意事项
查看>>
libGDX简介
查看>>
《深入理解计算机系统(第三版)》第二章学习总结
查看>>
JavaScript专题——专题三 JavaScript 面向对象
查看>>
快速排序
查看>>
crontab调用python脚本新思路
查看>>
df和du显示的磁盘空间使用情况不一致的原因及处理(文件删除后磁盘空间不释放)...
查看>>
进程与线程的关系与区别
查看>>
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>
Building Tablet PC Applications ROB JARRETT
查看>>
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>
android多层树形结构列表学习笔记
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>