zoukankan      html  css  js  c++  java
  • UVa 10491

    链接:

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1432

    题意:

    有这么一个电视节目:你的面前有3个门,其中两扇门里是奶牛,另外一扇门里则藏着奖品——一辆豪华小轿车。
    在你选择一扇门之后,门并不会立即打开。这时,主持人会给你个提示,
    具体方法是打开其中一扇有奶牛的门(不会打开你已经选择的那个门,即使里面是牛)。
    接下来你有两种可能的决策:保持先前的选择,或者换成另外一扇未开的门。
    当然,你最终选择打开的那扇门后面的东西就归你了。
    在这个例子里面,你能得到轿车的概率是2/3(难以置信吧!),方法是改变自己的选择。
    2/3这个数是这样得到的:如果选择了两个牛之一,你肯定能换到车前面的门,因为主持人已经让你看了另外一个牛;
    而如果你开始选择的就是车,就会换成剩下的牛并且输掉奖品。由于你的最初选择是任意的,因此选错的概率是2/3。
    也正是这2/3的情况让你能换到那辆车(另外1/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:一开始选了牛(概率为a / (a+b)),则可选门中车门有b个。这种情况的概率为a/(a+b) * b/(a+b-c-1)。
    情况2:一开始选了车(概率为b / (a+b)),则可选门中车门有b-1个,概率为b/(a+b) * (b-1)/(a+b-c-1)。
    加起来得(ab+b(b-1)) / ((a+b)(a+b-c-1))。

    代码:

     1 import java.io.*;
     2 import java.util.*;
     3 
     4 public class Main {
     5     public static void main(String args[]) {
     6         Scanner cin = new Scanner(new BufferedInputStream(System.in));
     7         
     8         while(cin.hasNext()) {
     9             int a = cin.nextInt();
    10             int b = cin.nextInt();
    11             int c = cin.nextInt();
    12             double ans = 1.0 * (a*b + b*(b-1)) / (a+b) / (a+b-c-1);
    13             System.out.printf("%.5f
    ", ans);
    14         }
    15         cin.close();
    16     }
    17 }
  • 相关阅读:
    grub
    init
    内核的ramdisk
    kernel信息及其相关命令
    mvc和mvvm模式
    vue从零开始(一)
    echarts自动播放图形
    echarts自定义悬浮框的显示
    typescript入门
    echarts的最外层配置项
  • 原文地址:https://www.cnblogs.com/hkxy125/p/8922717.html
Copyright © 2011-2022 走看看