QOJ.ac

QOJ

Limite de temps : 5 s Limite de mémoire : 1024 MB Points totaux : 32 Interactif

#11461. 能量排列者

Statistiques

加油,能量战士!每个人都喜欢这支由五名高中生超级英雄组成的队伍,他们分别佩戴字母 A、B、C、D 和 E。当他们并排站立对抗邪恶怪物时,他们会以 120 种可能的不同从左到右的顺序排列,从而获得各种不同的战术超能力。他们甚至比“忍者神龟”还要受欢迎!

该节目的评论家声称,该团队之所以有这种排列噱头,只是为了让节目所有者能够销售 120 套不同的 5 个动作人偶,每一套都以不同的从左到右的顺序展示团队,并粘在底座上,因此该套装无法重新排列。作为一名狂热的能量战士粉丝,你收集了其中的 119 套,但你不记得缺少哪一套了。你的 119 套人偶在架子上水平排列,总共有 $119 \times 5 = 595$ 个动作人偶按从左到右的顺序排列。你不记得这些套装是如何排列的,但你知道套装的排列方式是从所有可能的排列中均匀随机选择的,并且对于每个测试用例都是独立的。

你不想浪费时间去弄清楚缺少哪一套,所以你计划查看架子上最多 $F$ 个人偶上的字母。例如,你可以选择查看从左边数第八个人偶上的字母,这将是左起第二套中的第三个人偶。查看一个人偶时,你只能获得那一个人偶上的字母;字母很难看清,而且如果不看字母,不同的团队成员看起来非常相似!

在检查了最多 $F$ 个人偶后,你必须找出缺少哪一套,这样你就可以完成你的收藏并准备好面对任何可能的邪恶威胁!

输入格式

这是一个交互式问题。请确保你已阅读我们常见问题解答(FAQ)中关于交互式问题的部分。

最初,你的程序应该读取一行,包含两个整数 $T$(测试用例的数量)和 $F$(每个测试用例允许检查的人偶数量)。然后,你需要处理 $T$ 个测试用例。

在每个测试用例中,缺失的套装是从所有可能的套装中均匀随机选择的,剩余套装的顺序也是从所有可能的顺序中均匀随机选择的。每一个选择都独立于所有其他选择以及你的输入。

在每个测试用例中,你的程序将与我们的裁判进行最多 $F + 1$ 次交互。你可以进行最多 $F$ 次以下形式的交互:

  • 你的程序输出一行,包含一个 $1$ 到 $595$ 之间的整数(含边界),表示你希望查看哪一个人偶(按架子上从左到右的顺序)。作为进一步的示例,$589$ 将代表右起第二套中的第四个人偶。
  • 裁判回复一行,包含一个大写字母 A、B、C、D 或 E,表示该人偶上的字母。如果你发送了无效数据(例如,超出范围的数字或格式错误的行),裁判将回复一行,包含单个大写字母 N。

然后,在你进行了想要进行的 $F$ 次交互后,你必须再进行一次以下形式的交互:

  • 你的程序输出一行,包含一个由五个大写字母组成的字符串:对应于缺失套装的排列(例如,CADBE)。
  • 裁判回复一行,包含一个大写字母:如果你的答案正确,则为 Y;如果答案不正确(或者你提供了格式错误的行),则为 N。如果你收到 Y,你应该开始下一个测试用例,或者如果没有更多测试用例,则停止发送输入。

在裁判向你的输入流发送 N(因为数据无效或答案不正确)后,它将不会发送任何其他输出。如果你的程序在收到 N 后继续等待裁判,你的程序将超时,导致“时间限制超限”(Time Limit Exceeded)错误。请注意,你有责任让你的程序及时退出以接收“答案错误”(Wrong Answer)判决,而不是“时间限制超限”错误。通常,如果超过内存限制或程序出现运行时错误,你将收到相应的判决。

数据范围

$1 \le T \le 50$。 时间限制:每个测试集 40 秒。 内存限制:1GB。 缺失的套装以及剩余套装的顺序是均匀且独立随机选择的。

测试集 1(可见)

$F = 475$。

测试集 2(隐藏)

$F = 150$。

样例

此交互对应于测试集 1。

t, f = readline_int_list() // 读取 50 到 t,475 到 f
printline 10 to stdout // 查看左起第二套中的最后一个
                       // 人偶
flush stdout
n = readline_string() // 读取 B 到 n。哦,团队成员 B!他们可能
                      // 没有 A 的领导能力,也没有 C 的技术
                      // 技巧,但他们用聪明的俏皮话娱乐团队!
printline 11 to stdout // 查看左起第三套中的第一个
                       // 人偶
flush stdout
n = readline_string() // 读取 B 到 n。注意 B 在第三套的开头,
                      // 而他们之前在第二套的末尾。
printline 14 to stdout // 查看左起第三套中的第四个
                       // 人偶
flush stdout
n = readline_string() // 读取 D 到 n。沉默而忧郁,团队成员 D
                      // 依然奋力战斗以保护他们的朋友……
                      // 和世界!
printline ABCDE to stdout // 我们愚蠢地做了一个盲目的猜测,尽管我们
                          // 最多还可以查看 472 个人偶。
flush stdout
verdict = readline_string() // 读取 N 到 verdict(裁判判定我们的
                            // 解决方案不正确)
exit // 退出以避免模棱两可的 TLE 错误

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.