SP13801 DEXTER - Dexter Rank

题目描述

Dexter 刚参加了一场编程竞赛,目前正在等待评审结果。每次等待都让他非常无聊,因此他希望根据当前的排行榜情况以及每道题出错的可能性,来预估自己的期望排名。具体来说,这场比赛有 $M$ 道题目,有 $N$ 名选手参赛。Dexter 已经知道,第 $i$ 位选手完成第 $j$ 道题所用的罚时为 $penalty[i][j]$。同时,他也知道第 $j$ 道题在通过系统测试时的成功概率为 $prob[j]$(这同样适用于 Dexter 自己)。每个选手对每道题的解决情况是独立的。现在,Dexter 想要知道在系统测试结束后,他的期望排名是多少。 需要注意的是,选手是根据正确解决题目的数量进行排名的;如果数量相同,则以所有正确解题的罚时多少决定排名;如果罚时也相同,则并列排名。 举个例子:假设系统测试后的排行榜如下: - 选手 1:300 -1 -1,得分:1,罚时:300 - 选手 2:100 -1 200,得分:2,罚时:300 - 选手 3:-1 300 -1,得分:1,罚时:300 - 选手 4:-1 -1 400,得分:1,罚时:400 对应的排名将是:2 1 2 4。

输入格式

第一行输入一个整数 $T$,表示测试用例的数量。 对于每个测试用例: - 第一行输入两个空格分隔的整数 $N$ 和 $M$。 - 接下来的 $N$ 行中,每行包含 $M$ 个整数,第 $i$ 行的第 $j$ 个整数表示 $penalty[i][j]$,即第 $i$ 位选手对第 $j$ 道题的罚时,如果未提交则为 -1。 - 第 $M + 1$ 行中包含 $M$ 个空格分隔的整数,每个整数表示相应题目的通过系统测试的概率 $prob[i]$。 Dexter 是列表中的第一个选手。

输出格式

输出 Dexter 在系统测试后的期望排名,要求保留到四位小数。

说明/提示

- $1 \le T \le 16$ - $2 \le N \le 256$ - $1 \le M \le 12$ - $1 \le penalty[i][j] \le 1000000$ 或 $penalty[i][j] = -1$ - $0 \le prob[j] \le 100$ ## 示例 ### 输入 ``` 3 2 1 100 150 50 2 2 -1 -1 10 -1 0 100 3 2 100 200 -1 199 99 -1 50 50 ``` ### 输出 ``` 1.2500 1.0000 1.6250 ``` ### 解释 - 对于第一个测试用例,如果 Dexter 的解决方案通过或者第二位选手的解决方案不通过,那么他的排名就是第一,这种情况发生的概率是 0.75;否则他的排名是第二位。因此,答案为 $1 \times 0.75 + 2 \times 0.25 = 1.2500$。 - 对于第二个测试用例,所有选手在任何情况下都没有解出题目,因此皆为第一,所以答案是 1.0000。 **本翻译由 AI 自动生成**