POJ 2151 Check the difficulty of problems
2017-05-12 21:39
363 查看
/* 我们很容易得到e[i][j]表示做了前i题A了j题的概率 于是我们可以用s[i][j]记录e[m][(0~j)]的前缀和即表示第i队的 A(0~j)题的概率 */ #include<stdio.h> #include<string.h> using namespace std; const int M=55; double e[M][M],p[1005][M],s[1005][M]; int main(){ int n,m,k; while(~scanf("%d %d %d",&m,&n,&k)&&m){ for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) scanf("%lf",&p[i][j]); for(int i=1;i<=n;i++){ e[0][0]=1; for(int j=1;j<=m;j++)e[j][0]=e[j-1][0]*(1-p[i][j]); for(int j=1;j<=m;j++)for(int a=1;a<=j;a++) e[j][a]=e[j-1][a]*(1-p[i][j])+e[j-1][a-1]*p[i][j]; s[i][0]=e[m][0]; for(int j=1;j<=m;j++) s[i][j]=s[i][j-1]+e[m][j]; //表示第i队做出的题小于等于j的概率 } double P1=1,P2=1;//分别表示每队全A的概率和每队只A 1~k-1题的概率 for(int i=1;i<=n;i++)P1*=(1-s[i][0]),P2*=(s[i][k-1]-s[i][0]); printf("%.3f\n",P1-P2); } }
相关文章推荐
- POJ-2151 Check the difficulty of problems 概率DP
- 【POJ】2151 Check the difficulty of problems
- 【POJ】【2151】Check the difficulty of problems
- POJ 2151 Check the difficulty of problems (概率DP)
- 简单概率DP(POJ 2151 Check the difficulty of problems)
- POJ 2151 Check the difficulty of problems (动态规划-概率DP)
- POJ 2151 Check the difficulty of problems [概率DP]
- poj 2151 Check the difficulty of problems- DP
- POJ 2151, Check the difficulty of problems
- poj 2151 Check the difficulty of problems
- Check the difficulty of problems POJ 2151
- POJ_2151_Check the difficulty of problems_概率DP
- poj 2151 -- Check the difficulty of problems
- POJ2151-Check the difficulty of problems
- POJ-2151-Check the difficulty of problems
- Check the difficulty of problems--POJ 2151
- POJ 2151 Check the difficulty of problems
- POJ - 2151-Check the difficulty of problems-概率dp
- poj 2151 Check the difficulty of problems 概率dp
- poj 2151 Check the difficulty of problems (概率与期望DP)