码迷,mamicode.com
首页 > 其他好文 > 详细

2015浙工大校赛- Problem I: no2(概率题,贝叶斯公式)

时间:2015-03-30 16:27:40      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:概率题   思维   贝叶斯公式   

题目链接:http://acm.zjut.edu.cn/onlinejudge/problem.php?cid=1101&pid=8


题面:



Problem I: no2

Time Limit: 1 Sec  Memory Limit: 32 MB
Submit: 342  Solved: 23
[Submit][Status][Web Board]

Description

已知有个市有n人,得了僵尸病的概率是p。你去参加了检测,检查出来是阳性。医生告诉你这次检测,得病的人检测出阳性的概率是r11,没得病的人检测出阳性的概率是r12。然后,为了保险起见,医生给你用了更好的药来检测,这次是阴性,这种药得病的人检测出阳性的概率是r21,没得病的人检测出来是阳性的概率r22。请问,你现在得病的概率是多少

Input

每行依次输入n,p,r11,r12,r21,r22

Output

每行输出概率,保留6位小数

Sample Input

1000 0.01 1 1 1 0

Sample Output

0.000000


题解:

概率论已经还给老师了,囧,知道是贝叶斯公式,却不记得了,最后还是臆想出来了!!

贝叶斯公式:


P(Ai|B)=P(B|Ai)P(Ai)/∑(P(B|Aj)P(Aj)) = P(B|Ai)P(Ai)/P(B)


臆想:

    应该和贝叶斯差不多吧。
    先算出第一种检测得病的概率为X,不得病的概率为1-X。然后用X代替P,再和第二次的数据计算一次,即为结果。


公式:
    x=r1*p/(r1*p+(1-p)*r2);
    ans=x*(1-r3)/(x*(1-r3)+(1-x)*(1-r4));

代码:

#include <iostream>  
#include <cstring>  
#include <cstdio>  
#include <string>  
#include <iomanip>  
#include <vector>  
#include <map>  
#include <set>  
#include <algorithm>  
#include <queue>  
#include <cmath>  
using namespace std;  
  
int main() 
{ 
    int n; 
    double p,r1,r2,r3,r4,ans,x1,x2; 
    while(cin>>n>>p>>r1>>r2>>r3>>r4) 
    { 
        x1=r1*p/(r1*p+(1-p)*r2);
		ans=x1*(1-r3)/(x1*(1-r3)+(1-x1)*(1-r4));
        cout<<fixed<<setprecision(6)<<ans<<endl; 
    } 
    return 0; 
} 



Problem I: no2

Time Limit: 1 Sec  Memory Limit: 32 MB
Submit: 342  Solved: 23
[Submit][Status][Web Board]

Description

已知有个市有n人,得了僵尸病的概率是p。你去参加了检测,检查出来是阳性。医生告诉你这次检测,得病的人检测出阳性的概率是r11,没得病的人检测出阳性的概率是r12。然后,为了保险起见,医生给你用了更好的药来检测,这次是阴性,这种药得病的人检测出阳性的概率是r21,没得病的人检测出来是阳性的概率r22请问,你现在得病的概率是多少

Input

每行依次输入n,p,r11,r12,r21,r22

Output

每行输出概率,保留6位小数

Sample Input

1000 0.01 1 1 1 0

Sample Output

0.000000

2015浙工大校赛- Problem I: no2(概率题,贝叶斯公式)

标签:概率题   思维   贝叶斯公式   

原文地址:http://blog.csdn.net/david_jett/article/details/44751797

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!