http://poj.org/problem?id=2151
有t个队伍,m道题,给出每个队伍做出每道题的概率。求出每个队伍至少做出一道题并且冠军队伍至少做出n道题的概率。
只要设出数组来,就很直观了。
dp[i][j][k]表示第i个队伍在前j道题中解出k道题的概率,s[i][j]表示第i个队伍最多解出j道题的概率。
首先初始化dp[i][0][0]和dp[i][j][0],那么dp[i][j][k] = dp[i][j-1][k-1]*a[i][j] + dp[i][j-1][k]*(1-a[i][j])。
s[i][j] = dp[i][m][0] + dp[i][m][1] + .....+dp[i][m][j]。
首先求出每个队伍至少解出一道题的概率p1 = (1-s[1][0]) * (1-s[2][0]) *.....*(1-s[t][0])。
然后求出每个队伍都解除1~n-1道题的概率p2 = (s[1][n-1] - s[1][0]) * (s[2][n-1] - s[2][0])*......*(s[t][n-1] - s[t][0])。
那么答案就是p1-p2。
#include
#include
#include