牛牛要参加一场程序猿世界杯,一共有 2^n 名选手参加比赛,选手们依次编号从 1 到 2^n ,比赛采用单淘汰制,即第一轮 (1,2),(3,4),·s,(2^n-1,2^n) 进行比赛,第一轮的决胜者再与相连的选手进行比赛,每轮都会淘汰一半的选手,进行 n 之后能决出冠军。牛牛的编号为 m ,但是牛牛知道了各个选手与其他选手比赛时的胜率。牛牛想知道他能夺冠的概率是多少呢,牛牛给你各个选手之间若进行比赛时的胜率,请你告诉牛牛他夺冠可能的概率是多少呢
第一行为两个整数 n,m ,表示进行多少轮比赛,以及牛牛的编号。 接下来有 2^n 行,每行有 2^n 个整数,第 i 行第 j 个元素 P_ij 表示第 i 名选手战胜第 j 名选手的概率。 1≤ n≤ 10,0≤ P_ij≤ 100,P_ii=0,P_ij+P_ji=100
输出为一个浮点数表示答案,答案的误差应小于0.000001。
2 3 0 10 90 90 90 0 10 10 10 90 0 50 10 90 50 0
0.4100000000
考点:概率论
数据规模 n ≤ 10 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:概率论
本题切入点
单淘汰赛树形结构,用 DP 求每个选手进入每一轮的概率,逐轮向父节点合并计算夺冠概率。
用期望的线性性质拆解问题,避免枚举全部状态。
思路框架(概率论 通法 · 非本题专属)
实现要点:计数期望时,先算总方案数,再算目标方案数,比值即概率。
复杂度:时间 O(n) ~ O(n²) | 空间 O(1) ~ O(n)
该范式的通法易错点
对照本题
样例 1:输入 2 3 / 0 10 90 90 / 90 0 10 10 / 10 90 0 50 / 10 90 50 0 → 输出 0.4100000000
0.41=0.5*0.1*0.1+0.5*0.9*0.9
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:贝壳找房2023届校招算法卷3。