题目大意:有2^n个足球队,编号依次为1,2,3……2^n,按照递增的顺序每两个相邻的队伍之间进行比赛,赢的队伍进入下一轮,然后再按照同样的规则进行比赛,共进行n轮比赛,最后剩下的一个队伍即为冠军,求最可能成为冠军的队伍。输入为2^n行2^n列,第i 行第 j 列的值p[i][j] 表示第i个队伍打败第j个队伍的概率。
解题思路:据大神说,这是个简单的dp题,于是我就一直推啊推,历经两个小时终于推出状态转移方程了,交一发wrong掉了,后来发现是一个小细节处理失误了,嘎嘎 貌似这是第一次独立做出dp题啊,HAPPY啊~~
我想的比较绕,先说一下大神的思路吧 ,简单易懂。
用dp[i][j]表示第i轮比赛第j个队伍获胜的概率,则dp[0][i] = 1 , dp[i][j] += dp[i-1][j] * dp[i-1][k] * p[j][k]; k取决于i和j。最后找到dp[n][i]中最大值对应的队伍号即可。
假设有4支队伍,第一轮对决:0和1,2和3;第二轮:0和2或3, 1和2或3,2和1或0,3和1或0 ……(队伍号下标从0开始)
第一轮:
dp[1][0] = dp[0][0] * dp[0][1] * p[0][1];
dp[1][1]