P13318 [GCJ 2012 #1B] Safety in Numbers

题目描述

有 $N$ 名选手参加一档真人秀节目。每位选手会被评委打分,并获得观众投票。评委分数与观众投票将按照如下方式合成为选手的最终得分: 设 $x$ 为所有选手评委分数的总和。假设某位选手获得了 $j$ 分评委分数,并且她获得了观众投票的 $y$ 部分($y$ 在 $0$ 到 $1$ 之间,包括 $0$ 和 $1$,例如 $y$ 可能为 $0.3$)。那么这位选手的最终得分为 $j + x \cdot y$。注意,所有选手获得的观众投票比例之和必须为 $1$。 得分最低的选手将被淘汰。 现在给定每位选手从评委那里获得的分数,你的任务是,对于每一位选手,计算她为了**确保自己不会被淘汰**,无论其他观众票如何分配,至少需要获得多少百分比的观众投票。 如果有多名选手并列最低分,则没有任何选手会被淘汰。

输入格式

输入的第一行为测试用例数 $T$。接下来有 $T$ 行,每行一个测试用例。每个测试用例以一个整数 $N$ 开头,表示选手人数,后面跟着 $N$ 个整数 $s_0, s_1, ..., s_{N-1}$,分别表示每位选手从评委那里获得的分数。各数之间用一个空格分隔。

输出格式

对于每个测试用例,输出一行,格式为 "Case #x: ",后接 $N$ 个实数 $m_i$。$x$ 为测试用例编号(从 $1$ 开始),$m_i$ 表示第 $i$ 位选手为确保不会被淘汰,至少需要获得的观众投票百分比。 只要答案的绝对或相对误差不超过 $10^{-5}$,即视为正确。

说明/提示

**限制条件** - $0 \leq s_i \leq 100$ - 至少存在一个 $i$ 使得 $s_i > 0$。也就是说,至少有一名选手的评委分数大于 $0$。 **测试集 1(10 分,结果可见)** - $1 \leq T \leq 20$ - $2 \leq N \leq 10$ **测试集 2(11 分,结果隐藏)** - $1 \leq T \leq 50$ - $2 \leq N \leq 200$ 翻译由 ChatGPT-4.1 完成。