QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 512 MB Total points: 100

#17210. Fair

统计

Felicia Day 喜欢玩 DnD。为此,她需要各种各样的骰子,在本题中是 $N$ 面骰子。她喜欢冒险,为了省钱,她购买了 $K$ 个打折的骰子。然而,她发现并非所有骰子都是公平的(如果一个骰子每一面出现的概率相等,则称其为公平的)。更准确地说,每个骰子是公平的概率为 $P$,如果它不公平,则每一面出现的概率按以下方式生成:

  1. 对于 $i$ 从 1 到 $N$,生成一个 0 到 1 之间的随机数,记为 $Q_i$。
  2. 出现第 $i$ 面的概率等于 $\frac{Q_i}{Q_1 + Q_2 + \dots + Q_N}$。

我们可以认为公平的骰子是所有 $Q_i$ 值相等的特殊情况。

Felicia 急于分辨哪些骰子是公平的,哪些是不公平的,但她没有太多时间,因此她将每个骰子投掷了 $M$ 次。她记录了结果——每个骰子每一面出现的次数,但她不确定如何分析这些数据。请编写一个程序来帮助她将骰子分类为公平或不公平。当然,不要求 100% 的准确率。相反,每种错误都有相应的惩罚:如果你将一个公平的骰子分类为不公平,惩罚为 $X$,而如果你将一个不公平的骰子分类为公平,惩罚为 $Y$。你的目标是最小化总的错误惩罚。

数据范围

  • $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$

输入格式

第一行输入 $N, M, P, X$ 和 $Y$。下一行输入 $K$。接下来的 $K$ 行,每行输入 $N$ 个整数,其中第 $i$ 行的第 $j$ 个数是骰子 $i$ 的第 $j$ 面出现的次数。

输出格式

在标准输出中,为每个骰子单独占一行输出 ‘1’ 将其分类为公平,或输出 ‘0’ 将其分类为不公平。

子任务

每个测试点单独评分。给定测试点的得分计算方式如下:

  1. 令 $TP$ 为你的解法产生的总错误惩罚。
  2. $AP = \frac{TP}{K}$
  3. $BAP = \min(P \times X, (1 - P) \times Y)$
  4. $S = \max\left(\frac{BAP - AP}{BAP}, 0\right)$
  5. $R = \frac{S}{S_{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} $$

样例

输入 1

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

输出 1

0
1
0
1

说明 1

结果显示,该解法正确识别了第 2 和第 3 个骰子,但对第 1 和第 4 个骰子识别错误。第一个错误带来的惩罚是 0.35,第二个是 0.65。总惩罚为 1.0。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1309EditorialOpenOfficial EditorialAnonymous2026-03-20 13:06:21View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.