现在的位置: 首页 > 综合 > 正文

POJ 2151 (DP +补集)

2013年08月14日 ⁄ 综合 ⁄ 共 1445字 ⁄ 字号 评论关闭

ZZ tp://www.cppblog.com/proyao/archive/2009/07/19/90527.aspx

『题目大意』
一次比赛中,共M道题,T个队,p[i][j]表示队i解出题j的概率;问每队至少解出一题且

冠军队至少解出N道题的概率。

算法
设a[i][j][k]表示第i队在前j道题中共解出k道题的概率,易得a[i][j][k]有如下递推
关系(另需考虑边界条件):

a[i][j][k] = a[i][j-1][k-1] * p[i][j] + a[i][j-1][k] * (1-p[i][j])

设s[i][j]表示a[i][M][0] + a[i][M][1] + ... + a[i][M][j]

问题的解可以转化为:每队均至少做一题的概率(用P1表示)减去每队做题数均在1到N-1

之间的概率(用P2表示)。

P1 = (s[1][M] - s[1][0])*(s[2][M]-s[2][0])*...*(s[T][M]-s[T][0])
P2 = (s[1][N-1] - s[1][0])*(s[2][N-1]-s[2][0])*...*(s[T][N-1]-s[T][0])

『算法复杂度』
O(T*M^2)

抱歉!评论已关闭.