zoukankan      html  css  js  c++  java
  • Uva10491 Cows and Cars 【迁移自洛谷博客】

    题目大意

    假设有a头牛,b辆车(门的总数为a+b),你先选一个门,然后你最终选择前主持人会替你打开C扇有牛的门(不会打开你已经选择的门),问你要不要换门,输出“总是换门”的策略下,赢得车的概率。

    分析

    很明显这一题有两种情况。

    (设事件A为得到了车,B为一开始选择牛门,C为一开始选择车门)

    第一种,一开始选择了牛门。选择牛门这的事件的概率(P(B)=frac{a}{a+b}),在选择了牛门的情况下最后得到了车的概率(P(A|B)=frac{b}{a+b-c-1}),这里-c因为打开了c个牛门不能选,-1因为换了一个非当前选择的门。则有$$P(AB)=P(A|B)*P(B)=frac{a}{a+b} imes frac{b}{a+b-c-1}$$

    第二种,一开始选择了车门。选择牛门这的事件的概率(P(C)=frac{b}{a+b}),在选择了牛门的情况下最后得到了车的概率(P(A|C)=frac{b-1}{a+b-c-1}),这里-c因为打开了c个牛门不能选,分母-1因为换了一个非当前选择的门,分子-1是因为自己的车门也不能选了。则有$$P(AC)=P(A|C)*P(C)=frac{b}{a+b} imes frac{b-1}{a+b-c-1}$$

    因此总概率为$$P(A)=P(AB)+P(AC)=frac{a}{a+b} imes frac{b}{a+b-c-1} + frac{b}{a+b} imes frac{b-1}{a+b-c-1}$$

    代码

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    int a,b,c;
    double p1,p2,ans;
    
    void Init(){
        int r=scanf("%d%d%d",&a,&b,&c);
        if(r==EOF)exit(0);
    }
    
    void Work(){
        p1=(double)(a*b)/((a+b)*(a+b-c-1));
        p2=(double)(b*(b-1))/((a+b)*(a+b-c-1));
        ans=p1+p2;
        printf("%.5lf
    ",ans);
    }
    
    int main(){
        while(1){
            Init();
            Work();    
        }
        return 0;
    }
    

    ——2017-12-13 13:39:14

  • 相关阅读:
    VirtualBox 创建com对象失败
    大数据(十)
    HITCON 2014 已開始征求投稿计划书
    CSS
    工具
    工具
    Linux
    Python
    JavaScript
    JavaScript
  • 原文地址:https://www.cnblogs.com/hankeke/p/Uva10491-Cows_and_Cars.html
Copyright © 2011-2022 走看看