QOJ.ac

QOJ

Límite de tiempo: 3 s Límite de memoria: 512 MB Puntuación total: 100 Comunicación

#4828. 四加四

Estadísticas

玛丽安娜女王有三个女儿(公主们)。玛丽安娜将她的皇家印章锁在一个保险箱里。保险箱由一个密码保护:这是一个来自皇家词典的八字母英文单词。密码每隔几天就会更换。

女王经常去度假,在此期间,公主们学习如何治理王国。然而,她们中没有人知道密码,玛丽安娜希望任何两位公主在达成协议的情况下都能打开保险箱。为此,她在三张卡片上写下了三个密钥:来自皇家词典的四字母英文单词。每个密钥都由密码的字母组成:从八个字母中选出四个并可能进行重排,使得结果是一个词典单词。之后,女王将卡片放入帽子中,然后三位公主依次随机抽取一张卡片并自己保管,不向他人展示。

在手头有皇家词典的情况下,请为女王和公主们设计一种安排,使得在玛丽安娜分发密钥后,任何两位公主都能利用她们手中的两个密钥确定密码。

交互协议

在本题中,你的程序将在每个测试点上运行两次。每一行输入均以换行符结尾。词典在每个测试点和样例中都是相同的:单词取自名为 ENABLE2K 的自由分发词汇表。输入和输出中的所有单词均由小写英文字母组成。

第一轮

在第一轮中,你的程序代表玛丽安娜女王。第一行包含单词 “password”。第二行包含一个整数 $n$:需要选择密钥的密码数量($1 \le n \le 10\,000$)。接下来的 $n$ 行,每行包含一个密码:一个来自皇家词典的八字母单词。只有当能够从其字母中构造出至少三个不同的密钥时,该单词才能作为密码给出。

之后,给出皇家词典。描述占用四行,在每个测试点中均相同。第一行包含一个整数 $n_8$:词典中八字母单词的数量($n_8 = 28\,558$)。第二行是按字典序排列的八字母单词列表,以空格分隔。第三行包含一个整数 $n_4$:词典中四字母单词的数量($n_4 = 3919$)。第四行是按字典序排列的四字母单词列表,以空格分隔。

输出 $n$ 行:对于每个密码,输出玛丽安娜写在卡片上的三个密钥,顺序不限,以空格分隔。每个密钥都是来自皇家词典的四字母单词,由密码的字母组成:从其八个字母中选出四个并可能进行重排,使得结果是一个词典单词。密钥选择没有其他限制:例如,一个密码可以转化为三个相同的密钥,而另一个密码可以转化为一个相同的密钥和两个不同的密钥。

第二轮

在第二轮中,你的程序代表公主们。第一行包含单词 “keys”。第二行包含一个整数 $m$:密钥对的数量($1 \le m \le 60\,000$)。接下来的 $m$ 行,每行包含一对以空格分隔的密钥:每一对都是由评测程序从第一轮输出的某个密钥三元组中选出的。选择方式如下:首先,移除一个密钥,然后,剩下的两个密钥可能会被交换。这种选择是确定性的:如果两个解在第一轮中产生了相同的输出,它们在第二轮中将获得相同的输入。

之后,给出皇家词典。描述占用四行,与第一轮完全相同。

输出 $m$ 行:对于每一对密钥,输出正确的密码。

样例

输入 1

password
2
password
couthier
28558
aardvark aardwolf <...> zyzzyvas
3919
aahs aals abas <...> zori zyme

输出 1

swap road saws
thou thou thou

输入 2

keys
4
swap road
thou thou
saws swap
road saws
28558
aardvark aardwolf <...> zyzzyvas
3919
aahs aals abas <...> zori zyme

输出 2

password
couthier
password
password

说明

请注意,词典中的最后一个八字母单词 “zyzzyvas” 是一个不能作为密码的单词示例:从它的字母中,只能构造出一个密钥 “yays”。回想一下,只有当至少能从其字母中构造出三个密钥时,该单词才能作为密码。词典中有 70 个八字母单词不满足此条件。

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.