#P13025. [GCJ 2021 Qualification] Cheating Detection

    ID: 12839 远端评测题 60000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2021Special Judge概率论Google Code Jam

[GCJ 2021 Qualification] Cheating Detection

Description

100 名玩家正在参加一场包含 10000 道问题的问答锦标赛,玩家编号为 1 至 100。玩家 ii 拥有技能值 SiS_i,问题 jj 拥有难度值 QjQ_j。每个技能值和难度值都是从 [3.00,3.00][-3.00, 3.00] 范围内均匀随机且独立选取的。例如,某个玩家的技能值可能是 2.47853,而某个问题的难度值可能是 -1.4172。

当玩家 ii 尝试回答问题 jj 时,其答对的概率为 f(SiQj)f(S_i - Q_j),其中 ff 是 sigmoid 函数:

f(x)=11+exf(x) = \frac{1}{1 + e^{-x}}

这里 ee 是自然对数的底(约 2.718...)。注意到对所有 xx 都有 0<f(x)<10 < f(x) < 1,因此 f(SiQj)f(S_i - Q_j) 始终是有效的概率值。所有答题行为都是随机且独立进行的。

但有一个例外:这些玩家中恰好有一个是作弊者!作弊者是从所有玩家中均匀随机选出的,且与其他选择独立。作弊者的行为如下:在回答每个问题前,他们会抛一枚公平硬币。如果结果为正面,则不作弊并正常答题;如果为反面,则会秘密查阅正确答案并确保答对。形式化地说,他们对每个问题以 0.5 的概率独立决定是否作弊。

锦标赛的结果仅包含每位玩家对每道题目的答题结果(正确或错误)。除了上述描述外,你无法获知任何关于玩家技能值或问题难度的具体信息。

你需要在至少 P\mathbf{P}% 的测试用例中正确识别作弊者。也就是说,在 T\mathbf{T} 个测试用例中,你至少要正确判断 PT/100\mathbf{P} \cdot \mathbf{T}/100 个。

Input Format

输入的第一行给出测试用例数量 T\mathbf{T}。第二行给出通过测试所需的正确率 P\mathbf{P}。随后是 T\mathbf{T} 个测试用例,每个用例包含 100 行,每行 10000 个字符。第 ii 行的第 jj 个字符为 11 表示第 ii 名玩家答对了第 jj 题,为 00 表示答错。

Output Format

对于每个测试用例,输出一行 Case #xx: yy,其中 xx 是测试用例编号(从 1 开始),yy 是作弊者的编号(玩家编号从 1 开始)。

Use the download button above to view the full sample input.
Use the download button above to view the full sample input.

Hint

样例说明

注意样例输入使用 T=1\mathbf{T} = 1P=0\mathbf{P} = 0,因此不满足任何测试集的限制条件。其样例输出展示了实际的作弊者编号。

数据范围

  • T=50\mathbf{T} = 50

测试集 1(11 分,可见判定)

  • P=10\mathbf{P} = 10

测试集 2(20 分,可见判定)

  • P=86\mathbf{P} = 86

翻译由 DeepSeek V3 完成