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 完成