P15841 [Bulgarian NOI 2024] 公平 / Fair
题目描述
菲莉莎·戴喜欢玩 DnD。为此,她需要各种 $N$ 面的骰子。但她手头有点紧,为了省点钱,她在打折时买了 $K$ 个骰子。然而,她发现并非所有骰子都是公平的(一个骰子是公平的,当且仅当其每一面出现的概率相等)。更准确地说,每个骰子以概率 $P$ 是公平的;若不公平,则其每一面出现的概率按如下方式生成:
1. 对于 $i$ 从 $1$ 到 $N$,生成一个介于 $0$ 和 $1$ 之间的随机数,记作 $Q_i$。
2. 第 $i$ 面出现的概率等于 $\frac{Q_i}{Q_1 + Q_2 + \cdots + Q_N}$。
我们可以将公平骰子视为所有 $Q_i$ 值相等的骰子。
菲莉莎急于判断哪些骰子是公平的、哪些不是,但时间紧迫,因此她对每个骰子投掷了 $M$ 次。她记录了结果——即每个骰子的每一面各出现了多少次,但她不确定如何分析这些数据。请你编写一个程序,帮助她将骰子分类为“公平”或“不公平”。当然,并不要求达到 100% 的正确率。相反,每次错误都会受到惩罚:如果你将一个公平骰子误判为不公平,惩罚值为 $X$;如果你将一个不公平骰子误判为公平,惩罚值为 $Y$。你的目标是最小化总的惩罚值。
输入格式
从标准输入的第一行读入 $N, M, P, X$ 和 $Y$。下一行读入 $K$。接下来的 $K$ 行中,每行包含 $N$ 个整数——第 $i$ 行的第 $j$ 个数表示在第 $i$ 个骰子上,第 $j$ 面出现的次数。
输出格式
对于每个骰子,在标准输出的单独一行上输出 1 表示你将其分类为公平骰子,或 0 表示你将其分类为不公平骰子。
说明/提示
### 样例 1 解释
结果发现,该解决方案对骰子 $2$ 和 $3$ 判断正确,但对骰子 $1$ 和 $4$ 判断错误。第一次错误带来的惩罚是 $0.35$,第二次错误带来的惩罚是 $0.65$。总惩罚值为 $1.0$。
### 限制条件
- $2 \le N \le 8$
- $15 \le M \le 40$
- $0.5 \le P \le 0.8$
- $0.3 \le X, Y \le 0.7$
- $X + Y = 1$
- $K = 100000$
### 评分
每个测试点独立评分。给定测试点的得分按以下方式计算:
1. 设 $\text{TP}$ 为你的解决方案所犯错误的总惩罚值。
2. $\text{AP} = \frac{\text{TP}}{K}$
3. $\text{BAP} = \min(P \times X,\ (1 - P) \times Y)$
4. $S = \max\left(\frac{\text{BAP} - \text{AP}}{\text{BAP}},\ 0\right)$
5. $R = \frac{S}{S_{\text{Author}}}$
6. 你的得分为:
$$
\begin{cases}
0.3 + 0.7 \times \left(1 - \left(1 - \frac{R - 0.8}{1 - 0.8}\right)^{0.75}\right) & \text{若 } R \ge 0.8 \\
\frac{0.3}{0.8} \times R & \text{若 } R < 0.8
\end{cases}
$$
翻译由 Qwen3.5-397B-A17B 完成