Universal Cup Judging System

Universal Cup

Time Limit: 1.0 s Memory Limit: 1024 MB Total points: 100 Interactive Hackable ✓
Statistics

这是一个交互式问题。

懒惰的 Sam 和勤奋的 Sarah 被要求在由字符集 $\{H, T\}$ 组成的长度为 $n$ 的字符串集合上设计两个有趣的概率分布。懒惰的 Sam 只会简单地抛 $n$ 次硬币(每次抛硬币正面朝上的概率为 $\frac{1}{2}$,且所有抛硬币事件相互独立),并在每次正面朝上时写下 “H”,反面朝上时写下 “T”。你想帮助勤奋的 Sarah 给懒惰的 Sam 上一课。给你一个整数 $t$。请帮助 Sarah 设计一个与均匀分布 $t$-接近($t$-close)的分布,同时通过交互式地证明,在长度为 $t$ 的神谕访问(oracle access)下,你可以区分懒惰的 Sam 和勤奋的 Sarah 的分布。

形式化地,对于某个整数 $n$,考虑大小为 $2^n$ 的集合 $S = \{H, T\}^n$,它由字符集 $\{H, T\}$ 构成的所有可能的长度为 $n$ 的字符串组成。集合 $S$ 上的一个分布定义为一个由非负实数组成的、长度为 $2^n$ 的数组 $\{a_s\}_{s \in S}$,其以 $S$ 中的元素为下标,且它们的和等于 $1$。最简单的分布之一是均匀分布,其中所有的 $a_s$ 都等于 $2^{-n}$。

对于一对数 $\varepsilon \in [0; +\infty)$ 和 $k \in \{0, 1, \dots, n\}$,如果对于任意的 $k$ 个位置的选择 $1 \le i_1 < i_2 < \dots < i_k \le n$ 以及任意大小为 $k$ 的字符串子集 $T \subseteq \{H, T\}^k$,以下条件均成立,则称 $\{a_s\}_{s \in S}$ 是一个 $(\varepsilon, k)$-独立分布:在 $2^{n-k}$ 个子序列 $s[i_1]s[i_2]\dots s[i_k]$ 属于 $T$ 的字符串 $s$ 上,$a_s$ 的总和与 $\frac{|T|}{2^k}$ 的差值不超过 $\varepsilon$。用概率论的术语来说,这可以表示为:

$$\forall 1 \le i_1 < i_2 < \dots < i_k \le n \quad \forall T \subseteq \{H, T\}^k \quad \frac{|T|}{2^k} - \varepsilon \le \mathbb{P}_{s \leftarrow \{a_s\}_{s \in S}} \{s[i_1]s[i_2]\dots s[i_k] \in T\} \le \frac{|T|}{2^k} + \varepsilon$$

直观地说,这意味着要将该分布与均匀分布区分开来,你写下的分布要么需要区分差值不超过 $\varepsilon$ 的概率,要么需要查看该分布生成的字符串中超过 $k$ 个位置的字符。

如果分布 $\{a_s\}_{s \in S}$ 是 $(2^{-t}t, t)$-独立的,则称其为与均匀分布 $t$-接近 的。

在 $(\varepsilon, k)$-独立的定义中,隐含了你必须先选择 $k$ 个位置,然后才能研究这 $k$ 个位置上的概率分布。但在长度为 $k$ 的神谕访问(oracle access)模型中,情况完全不同。首先生成一个长度为 $n$ 的随机字符串,然后进行 $k$ 轮如下格式的交互:你调用一个整数 $i \in \{1, 2, \dots, n\}$,作为响应,你将被告知 $s[i]$。你可以根据之前所有提问及回答,来决定下一步调用哪个位置。

为了证明你可以区分懒惰的 Sam 和勤奋的 Sarah 的分布,你需要对从他们的分布中采样出的 $m$ 个长度为 $n$ 的字符串(每个字符串都是独立且等概率地从 Sam 或 Sarah 的分布中生成的)进行长度为 $t$ 的神谕访问,并对每一个字符串判断它是从谁的分布中采样出来的,且正确预测的次数至少为 $0.75m - 2\sqrt{m}$。

交互格式

第一行包含一个整数 $t$,表示与均匀分布所需的接近程度以及神谕访问的长度($1 \le t \le 5$)。

作为响应,你需要输出一行,包含一个整数 $n$,表示你准备为其提供分布以及可区分性交互证明的字符串长度($t \le n \le 20$)。

在下一行中,输出 $2^n$ 个整数 $b_s$,定义你的分布($0 \le b_s < 2^{64}$ 且 $\sum_{s \in S} b_s > 0$)。基于这些数据,评测机将根据规则 $a_s = b_s / \sum_{s \in S} b_s$ 来确定分布 $\{a_s\}_{s \in S}$。$b_s$ 的值必须按照字符串 $s$ 的字典序依次列出:例如,当 $n = 3$ 时,输出的顺序应当为:$b_{HHH}, b_{HHT}, b_{HTH}, b_{HTT}, b_{THH}, b_{THT}, b_{TTH}, b_{TTT}$。

接下来,读入一个整数 $m$,表示交互测试的次数($1 \le m \le 10^4$)。随后,将依次进行 $m$ 次测试。

在每次测试开始时,评测机将首先以 $\frac{1}{2}$ 的概率选择懒惰的 Sam 或勤奋的 Sarah 的分布 $\{a_s\}_{s \in S}$。之后,评测机采样一个随机字符串 $s \sim \{a_s\}_{s \in S}$:任何字符串 $s$ 被采样的概率为 $a_s$。然后,评测机允许你对字符串 $s$ 的字符进行不超过 $t$ 次提问。要进行提问,请输出一行,包含一个整数 $q \in \{1, 2, \dots, n\}$,表示你感兴趣的字符位置。之后,读入一个字符 “H” 或 “T” 作为该询问的回答。在进行 $0$ 到 $t$ 次提问后,如果你认为 $s$ 来自懒惰的 Sam 的分布,请输出一行 “Sam”;如果你认为 $s$ 来自勤奋的 Sarah 的分布,请输出一行 “Sarah”。在此之后,立即进入下一次测试,直到完成所有 $m$ 次测试。

输出的字符串不区分大小写。

在输出每一行后,请不要忘记清空输出缓冲区(flush)。

样例

输入样例 1

2
3
T
T
T
T
T

输出样例 1

3
7 4 8 9 7 6 7 1
1
2
SAM
1
2
Sarah
3
sARaH

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1215EditorialOpen题解jiangly2026-03-06 00:36:53View

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.