您的位置:首页 > 其它

POJ 3071 Football(概率DP)

2013-05-04 10:01 357 查看
题目链接:http://poj.org/problem?id=3071

题意:2^n个球队比赛,采用淘汰赛。Pij表示i胜j的概率。求n轮之后,哪个队胜出的概率最大?

思路:f[i][j]表示i队在j轮后胜出的概率,f[i][j]=sum(f[i][j-1]*f[k][j-1]*pjk)k为在第j轮i的可能对手。

double f

,p

;
int n;

int main()
{
Rush(n)
{
if(n==-1) break;
clr(f,0);
int i,j,k,L,R;
FOR0(i,(1<<n)) FOR0(j,(1<<n)) RD(p[i][j]);
FOR0(i,(1<<n)) f[i][0]=1;
FOR0(i,n) FOR0(j,(1<<n))
{
L=(j^(1<<i))>>i<<i;
R=L+(1<<i)-1;
FOR(k,L,R) f[j][i+1]+=f[j][i]*f[k][i]*p[j][k];
}
int ans=0;
FOR0(i,(1<<n)) if(f[i]
>f[ans]
) ans=i;
PR(ans+1);
}
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: