UVA11427概率期望+独立重复事件
生活随笔
收集整理的這篇文章主要介紹了
UVA11427概率期望+独立重复事件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 /*UVA11427*/
2 /*概率期望:
3 獨立重復事件A(p,n):
4 p:一件事情發生的概率為p
5 n:最多重復n次
6 要求:1、q=成功次數/實驗次數>p 結束實驗;
7 所求:n次實驗后,q一直小于等于p
8
9 初始思考:
10 ans=1-補集;
11 補集=p+(1-p)*p......這樣不好控制,因為無法手動枚舉出所有的情況
12
13 優化:
14 dp(i,j):發生i次實驗,沒有達成跳出條件,且發生了j次成功的概率
15 dp(i,j)=d(i-1,j-1)*p+dp(i-1,j)*(1-p) 滿足j/i<=p;
16 p(A)=d(n,0)+d(n,1)+d(n,2)+d(n,3).....+d(n,i) i/n<=p
17 ans=1/p(A)
18
19 邊界 :
20 memset(dp,0);
21 dp(0,0)=1;
22
23
24 */
25 #include<iostream>
26 #include<stdio.h>
27 #include<string.h>
28 #include<algorithm>
29 #include<stdlib.h>
30 #include<math.h>
31 #include<queue>
32 #include<vector>
33 #include<map>
34
35 using namespace std;
36
37 double dp[105][105];
38 int main()
39 {
40 int t,pi,pj,n;
41 double p;
42 cin>>t;
43
44 for(int cas=1;cas<=t; cas++)
45 {
46 scanf("%d/%d %d",&pi,&pj,&n);
47 p=(pi+0.0)/pj;
48 memset(dp,0,sizeof(dp));
49 dp[0][0]=1.0;
50 for(int i=1;i<=n;i++)
51 {
52 for(int j=0;j*pj<=pi*i;j++)//保證j/i<=pi/pj,這是一種技巧
53 {
54 dp[i][j]=dp[i-1][j]*(1-p);
55 if(j-1>=0) dp[i][j]+=dp[i-1][j-1]*p;
56 }
57 }
58 double pAns=0;
59 for(int j=0;j*pj<=pi*n;j++) pAns+=dp[n][j];
60 printf("Case #%d: %d\n",cas,(int)(1/pAns));
61
62 }
63 return 0;
64 }
?
轉載于:https://www.cnblogs.com/little-w/p/3570252.html
總結
以上是生活随笔為你收集整理的UVA11427概率期望+独立重复事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Silverlight 入门
- 下一篇: 汉堡包~~~