首页 > 其他 > 详细

poj 2151 Check the difficulty of problems

时间:2014-07-31 23:51:10      阅读:349      评论:0      收藏:0      [点我收藏+]

dp[i][j][s]表示第i个人,在前j个问题解决了s个问题

dp[i][j][s]=dp[i][j-1][s-1]*p[i][j]+dp[i][j-1][s]*(1-p[i][j]);

 1 #include<iostream>
 2 #include<string>
 3 #include<cstdio>
 4 #include<vector>
 5 #include<queue>
 6 #include<stack>
 7 #include<algorithm>
 8 #include<cstring>
 9 #include<stdlib.h>
10 #include<cmath>
11 using namespace std;
12 #define pb push_back
13 double dp[1010][35][35],p[1010][35];
14 int main(){
15     int n,m,k;
16     while(cin>>n>>m>>k&&(n+m+k)){
17         for(int i=1;i<=m;i++)
18             for(int j=1;j<=n;j++)
19             scanf("%lf",&p[i][j]);
20         memset(dp,0,sizeof(dp));
21         for(int i=1;i<=m;i++)
22             dp[i][0][0]=1;
23         for(int i=1;i<=m;i++){
24             for(int j=1;j<=n;j++){
25                  dp[i][j][0]=dp[i][j-1][0]*(1-p[i][j]);
26                  for(int s=1;s<=j;s++)
27                  dp[i][j][s]=dp[i][j-1][s-1]*p[i][j]+dp[i][j-1][s]*(1-p[i][j]);
28             }
29         }
30         double tmp=1,ko=1;
31         for(int i=1;i<=m;i++)
32         {
33             double tt=0;
34             for(int j=1;j<=n;j++)
35             tt+=dp[i][n][j];
36             ko*=tt;
37         }
38         for(int i=1;i<=m;i++)
39         {
40             double sum=0;
41             for(int j=1;j<k;j++)
42                 sum+=dp[i][n][j];
43             tmp*=sum;
44         }
45         printf("%.3f\n",ko-tmp);
46     }
47 }

 

poj 2151 Check the difficulty of problems,布布扣,bubuko.com

poj 2151 Check the difficulty of problems

原文:http://www.cnblogs.com/ainixu1314/p/3883764.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!