HDU-6568 Math 概率、期望
时间:2020-05-17
本文章向大家介绍HDU-6568 Math 概率、期望,主要包括HDU-6568 Math 概率、期望使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目链接:HDU-6568 Math
题意
Avin要带着机器人在数轴上从 0 走到 L,他走路按照以下规则:对于每个整数位置
- 如果Avin还带着机器人,则有 p 的概率弄丢机器人;
- 如果Avin在 i 位置弄丢机器人,则在 [i, L) 每个整数位置有 q 的概率发现,当到达终点 L 却没有机器人,则一定能够发现;
- 如果Avin发现弄丢机器人,则会往回走直到遇见机器人,否则他会继续前进。
问Avin从 0 走到 L 的路程期望是多少?
思路
设 \(f(i)\) 表示从 \(i\) 位置带着机器人,走到 \(i+1\) 位置也带着机器人的路程期望。下面用 \(E\) 来表示各个情况的路程期望。
- 在 \(i\) 位置没有弄丢机器人,\(E_1 = 1\) ;
- 在 \(i\) 位置弄丢了机器人,并且直到 \(L\) 才发现,概率为 \((1-q)^{L-i}\),回到 \(i\) 位置的路程为 \(2(L-i)\),所以期望 \(E_2=2(L-i)(1-q)^{L-i}\) ;
- 在 \(i\) 位置弄丢了机器人,但在 \([i, L-1]\) 就发现,则在 \(i+x\) 位置发现的概率为 \(q(1-q)^x\),回到 \(i\) 位置的路程为 \(2x\),枚举 \(x\),则这部分的期望 \(E_3=\sum_{x=0}^{L-i-1}2xq(1-q)^x\);
那么 \(f(i)=(1-p)E_1+p(E_2+E_3)\) ?可以发现 \(E_1\) 算的是走到 \(i+1\) 的路程期望,而 \(E_2、E_3\) 算的是回到 \(i\) 位置的路程期望,所以应该再加上从 \(i\) 走到 \(i+1\) 的路程期望,即 \(f(i) = (1-p)E_1 + p(E_2+E_3+f(i))\) ,移项得 \(f(i)=E_1+\frac{p}{1-p}(E_2+E_3)\) ,对 \(E_3\) 预处理即可 \(O(1)\) 计算 \(f(i)\),最终答案为 \(\sum_{i=0}^{L-1}f(i)\) 。
代码实现
很坑的一点是,题目没说要处理多组输入,但实际上没写多组输入会WA。
#include <cstdio>
double E3[100010], pow1_q[100010];
int main() {
int L;
double p, q;
while (~scanf("%d %lf %lf", &L, &p, &q)) {
pow1_q[0] = 1;
E3[0] = 0;
for (int x = 1; x <= L; x++) {
pow1_q[x] = pow1_q[x-1] * (1 - q);
E3[x] = E3[x-1] + 2 * x * q * pow1_q[x];
}
double ans = 0, E2;
for (int i = 0; i < L; i++) {
E2 = 2 * (L - i) * pow1_q[L-i];
ans += 1 + p / (1 - p) * (E2 + E3[L-i-1]);
}
printf("%.7f\n", ans);
}
return 0;
}
原文地址:https://www.cnblogs.com/kangkang-/p/12904789.html
- 走近科学:我是如何入侵Instagram查看你的私人片片的
- 在线手写识别的多卷积神经网络方法
- 苹果发布OS X 10.9.2更新,修复SSL漏洞
- Android内存泄漏终极解决篇(下)
- 利用Volatility查找系统中的恶意DLL
- 雪人行动:利用IE10 0day漏洞的APT攻击剑指美国军方情报
- Android开发:最详细的 Toolbar 开发实践总结
- 关于yubikey对web应用的杞人之忧
- 利用旧版Android漏洞的E-Z-2-Use攻击代码已在Metasploit发布
- Android Studio你不知道的调试技巧
- Android 数据绑定框架DataBinding,堪称解决界面逻辑的黑科技
- 汽车黑客:没有Security就没有Safety
- Android 自定义View高级特效,神奇的贝塞尔曲线
- Android二维码扫描开发(一):实现思路与原理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MyVBA加载宏——添加自定义菜单03——功能分析
- MyVBA加载宏——添加自定义菜单02——给按钮添加单击事件
- 科研猫小课堂:敲黑板!竞争风险模型应该如何分析?
- 常用功能加载宏——快速定位合并单元格
- 常用功能加载宏——调用微信截图
- 常用功能加载宏——一维表转二维表
- OpenCV与图像处理(八)
- 类模块
- Netty入门篇
- 面试官:谈谈类加载器吧,你有没有看过类加载器的源码?
- 数据维度爆炸怎么办?详解5大常用的特征选择方法
- 给卷积神经网络动动刀:加法网络探究
- 用Python网络爬虫来看看最近电影院都有哪些上映的电影
- 使用 Azure Blob Stoage 实现一个静态文件服务器
- java学习--反射详解