#P15841. [Bulgarian NOI 2024] 公平 / Fair

[Bulgarian NOI 2024] 公平 / Fair

说明

菲莉莎·戴喜欢玩 DnD。为此,她需要各种 NN 面的骰子。但她手头有点紧,为了省点钱,她在打折时买了 KK 个骰子。然而,她发现并非所有骰子都是公平的(一个骰子是公平的,当且仅当其每一面出现的概率相等)。更准确地说,每个骰子以概率 PP 是公平的;若不公平,则其每一面出现的概率按如下方式生成:

  1. 对于 ii11NN,生成一个介于 0011 之间的随机数,记作 QiQ_i
  2. ii 面出现的概率等于 QiQ1+Q2++QN\frac{Q_i}{Q_1 + Q_2 + \cdots + Q_N}

我们可以将公平骰子视为所有 QiQ_i 值相等的骰子。

菲莉莎急于判断哪些骰子是公平的、哪些不是,但时间紧迫,因此她对每个骰子投掷了 MM 次。她记录了结果——即每个骰子的每一面各出现了多少次,但她不确定如何分析这些数据。请你编写一个程序,帮助她将骰子分类为“公平”或“不公平”。当然,并不要求达到 100% 的正确率。相反,每次错误都会受到惩罚:如果你将一个公平骰子误判为不公平,惩罚值为 XX;如果你将一个不公平骰子误判为公平,惩罚值为 YY。你的目标是最小化总的惩罚值。

输入格式

从标准输入的第一行读入 N,M,P,XN, M, P, XYY。下一行读入 KK。接下来的 KK 行中,每行包含 NN 个整数——第 ii 行的第 jj 个数表示在第 ii 个骰子上,第 jj 面出现的次数。

输出格式

对于每个骰子,在标准输出的单独一行上输出 1 表示你将其分类为公平骰子,或 0 表示你将其分类为不公平骰子。

3 15 0.6 0.35 0.65
4
4 7 4
5 5 5
9 5 1
3 6 6
0
1
0
1

提示

样例 1 解释

结果发现,该解决方案对骰子 2233 判断正确,但对骰子 1144 判断错误。第一次错误带来的惩罚是 0.350.35,第二次错误带来的惩罚是 0.650.65。总惩罚值为 1.01.0

限制条件

  • 2N82 \le N \le 8
  • 15M4015 \le M \le 40
  • 0.5P0.80.5 \le P \le 0.8
  • 0.3X,Y0.70.3 \le X, Y \le 0.7
  • X+Y=1X + Y = 1
  • K=100000K = 100000

评分

每个测试点独立评分。给定测试点的得分按以下方式计算:

  1. TP\text{TP} 为你的解决方案所犯错误的总惩罚值。
  2. AP=TPK\text{AP} = \frac{\text{TP}}{K}
  3. BAP=min(P×X, (1P)×Y)\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=SSAuthorR = \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 完成