UVa 10491 Cows and Cars (条件概率)

题目

题目大意

有这么一个电视节目: 你的面前有\(3\)个门, 其中两扇门里是奶牛, 另外一扇门里则藏着奖品——一辆豪华小轿车。在你选择一扇门之后, 们并不会立即打开。这时, 主持人会给你个提示, 具体方法是打开其中一扇有奶牛的门(不会打开你已经选择的那个门, 即使里面是牛)。接下来你有两种可能的决策: 保持先前的选择, 或者换成另外一扇未开的门。当然, 你最终选择打开的那扇门后面的东西就归你了。

在这个例子里面, 你能得到轿车的概率是\(\frac{2}{3}\), 方法是总是改变自己的选择。

现在把问题推广一下, 假设有\(a\)头牛, \(b\)辆车(门的总数为\(a + b\)), 在最终选择前主持人会替你打开\(c\)个有牛的门(\(1 ≤ a ≤ 10000\), \(1 ≤ b ≤ 10000\), \(0 ≤ c < a\)), 输出"总是换门"的策略下, 赢得车的概率。

题解

打开\(c\)个牛门后, 还剩\(a - c\)头牛, 未开的门总数是\(a + b - c\), 其中有\(a + b - c - 1\)个门可以换, 然后分两种情况讨论:

  1. 一开始选中了牛(概率为\(\frac{a}{a + b}\)), 则可选门中车门有\(b\)个。这种情况的总概率为\(\frac{ab}{(a + b)(a + b - c - 1)}\);
  2. 一开始选中了车(概率为\(\frac{b}{a + b}\)), 则可选门中车门有\(b - 1\), 概率为\(\frac{b(b - 1)}{(a + b)(a + b - c - 1)}\)
    加起来得到概率为\(\frac{ab + b(b - 1)}{(a + b)(a + b - c - 1)}\)
代码
#include <cstdio>
double a, b, c;
int main(int argc, char const *argv[]) {
  while (~scanf("%lf %lf %lf", &a, &b, &c)) {
    printf("%.5lf\n", (a * b + b * (b - 1)) / ((a + b) * (a + b - c - 1)));
  }
  return 0;
}

转载于:https://www.cnblogs.com/forth/p/9715352.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值