QOJ.ac

QOJ

Límite de tiempo: 1 s Límite de memoria: 1024 MB Puntuación total: 100 Comunicación

#14860. 故障连接

Estadísticas

今天是 1825 年 6 月 25 日。英国发明家威廉·福瑟吉尔·库克(William Fothergill Cooke)和你——英国科学家查尔斯·惠斯通(Charles Wheatstone),正在研制一种早期电报系统的原型。该系统由一个发送端和一个接收端组成。发送端可以向接收端发送消息,我们将其建模为一个正整数序列。然而,这个原型远非完美,因此发送的整数经常无法被实际接收到。不过,整数在传输过程中绝不会被篡改,因此所有接收到的整数都保证是发送过的。

库克和惠斯通电报机可以通过 5 根指针指向传输的字母来发送信件。CC BY-SA 4.0 来自 Wikimedia Commons 的 Geni

为了弥补这一缺陷,你和库克正在设计一种纠错码。其核心思想是:双方约定一个包含 600 条可能消息的固定列表,索引为 1 到 600。为每条消息分配一个由 30 个不超过 1000 的正整数组成的列表。要发送列表中的某条消息,只需发送对应的整数列表即可。有时,某些整数可能会丢失或以不同的顺序到达,但如果保留了足够多的整数,我们希望仍然能够唯一确定那条唯一可能的消息。

在今年 4 月份进行测试时,你注意到,如果运气不好,连接可能会变得非常糟糕。有时最终只剩下了两个整数,这很容易导致消息产生歧义!你决定研究是否能纯粹通过改进纠错码来解决这个问题。对于 600 条可能的消息中的每一条,你需要为其分配一个由 30 个不超过 1000 的正整数组成的列表,使得从任意一个列表中以任意顺序接收到任意两个整数,都能唯一确定其对应的消息。

对于每个测试用例,你的程序将被运行多次。在第一次运行(pass)中,你的程序将获得要发送的消息的索引,你的程序应当为其分配一个包含 30 个整数的列表。在后续的运行中,你的程序将获得第一次运行输出的 30 个整数中的任意两个(顺序随机),程序需要对其进行解码以恢复原始消息。

你的程序在每次运行中的运行时间限制为 1 秒。

本题提供了一个测试工具(testing tool)以帮助你开发解决方案。

注:有人可能会指出,库克和惠斯通实际上直到 1837 年才发布了电报设计,但显然,这是因为我们在这里正试图解决这个问题!:)

输入格式

这是一个多阶段(multi-pass)问题。

输入包含:

  • 第一行包含一个字符串,表示你的程序需要执行的操作:
    • send:表示你需要发送一条消息。
    • receive:表示你需要接收两个整数并确定对应的消息。
  • 如果操作为 send,则接下来一行包含一个整数 $k$ ($1 \le k \le 600$),表示要发送的消息的索引。
  • 如果操作为 receive,则接下来一行包含两个不同的整数 $a$ 和 $b$ ($1 \le a, b \le 1000$),它们是你的程序在第一阶段输出的 30 个整数中的任意两个,顺序随机。

输出格式

如果操作为 send,输出 30 个不同的整数 $x$ ($1 \le x \le 1000$),将该整数列表分配给索引为 $k$ 的消息。

如果操作为 receive,输出对应消息的索引 $k$。

说明

样例输出中 send 操作的输出为了排版进行了折行。实际输出中的空格和换行照常处理。

样例

输入样例 1

send
42

输出样例 1

814 734 58 792 286 974 893 735 538 498 916 163 226 32 160 659 980 994 775 334 44 492 276 983 398 885 179 888 755 121

输入样例 2

receive
286 58

输出样例 2

42

输入样例 3

receive
163 492

输出样例 3

42

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.