#P13113. [GCJ 2019 #1C] Power Arrangers
[GCJ 2019 #1C] Power Arrangers
Description
Go, go, Power Arrangers!每个人都喜欢这支由五名高中生超级英雄组成的团队,他们分别佩戴字母 A、B、C、D 和 E。当他们并肩站立对抗邪恶怪兽时,会以 120 种不同的从左到右的排列方式排列队伍,从而获得各种不同的战术超能力。他们甚至比“忍者神龟”还要受欢迎!
一些评论家认为,这个团队之所以有排列的噱头,只是为了让节目拥有者能够售卖 120 套不同的 5 人手办,每一套都以不同的从左到右顺序固定在底座上,无法重新排列。作为一名狂热的 Power Arrangers 粉丝,你已经收集了其中的 119 套,但你不记得自己缺少哪一套。你的 119 套手办水平排列在书架上,总共有 个手办,按从左到右的顺序排列。你不记得这些套装的排列顺序,但你知道这些套装的排列是从所有可能的排列中等概率随机选择的,并且每种情况都是独立的。
你不想浪费时间去找出自己缺少哪一套,因此你计划最多查看 个手办上的字母。例如,你可以选择查看从左数第八个手办上的字母,这就是从左数第二套中的第三个手办。当你查看一个手办时,你只能获得该手办上的字母;这些字母很难看清,而且不同的队员外观非常相似!
在最多检查 个手办后,你必须判断出缺少的是哪一套,这样你才能完成你的收藏,随时准备对抗任何邪恶威胁!
交互协议
这是一个交互题。
最开始,你的程序应读取一行,包含两个整数 (测试用例数量)和 (每个测试用例允许检查的手办数量)。然后,你需要处理 个测试用例。
在每个测试用例中,缺失的那套手办会从所有可能的套装中等概率随机选择,剩下套装的排列顺序也会从所有可能的顺序中等概率随机选择。每一次选择都是独立的。
在每个测试用例中,你最多可以与评测器进行 次交互。你可以进行最多 次如下形式的交互:
- 你的程序输出一行,包含一个介于 1 到 595 之间的整数,表示你想查看的手办(从左到右编号)。例如,589 表示从右数第二套中的第四个手办。
- 评测器会回复一行,包含一个大写字母 A、B、C、D 或 E,表示该手办上的字母。如果你发送了无效数据(例如,超出范围的数字或格式错误的行),评测器会回复一行,内容为大写字母 N。
在你完成最多 次上述交互后,你还必须进行一次如下形式的交互:
- 你的程序输出一行,包含一个由五个大写字母组成的字符串,表示缺失套装的排列(例如,CADBE)。
- 评测器会回复一行,内容为一个大写字母:如果你的答案正确,则为 Y,否则为 N(或格式错误时也为 N)。如果你收到 Y,应开始下一个测试用例;如果没有更多测试用例,则停止输入。
如果评测器向你的输入流发送了 N(因为无效数据或答案错误),它将不会再发送任何输出。如果你的程序在收到 N 后继续等待评测器回复,将会超时,导致 Time Limit Exceeded 错误。请注意,你有责任让程序及时退出,以获得 Wrong Answer 判定,而不是 Time Limit Exceeded。如果超出内存限制或程序运行时出错,将会收到相应的判定。
如常规,若超出内存限制或程序运行时出错,将会收到相应的判定。
你可以使用本地测试工具进行测试。要在本地测试,你需要让测试工具与你的代码并行运行;你可以使用我们的 interactive runner。更多信息请阅读该文件中的注释说明。
测试工具的使用说明已包含在工具的注释中。我们鼓励你添加自己的测试用例。请注意,虽然测试工具旨在模拟评测系统,但它不是真实的评测系统,可能会有不同的表现。
限制条件
- 。
- 缺失的套装和剩余套装的顺序均为等概率独立随机选择。
测试点 1(11 分,可见)
- 。
测试点 2(21 分,隐藏)
- 。
Input Format
参见交互协议。
Output Format
参见交互协议。
Hint
本交互对应测试点 1。
t, f = readline_int_list() // 读取 t=50, f=475
printline 10 to stdout // 查看从左数第二套中的最后一个手办
flush stdout
n = readline_string() // 读取 n=B。哦,队员 B!虽然他没有 A 的领导力,也没有 C 的技术能力,但他用机智的俏皮话娱乐着团队!
printline 11 to stdout // 查看从左数第三套中的第一个手办
flush stdout
n = readline_string() // 读取 n=B。注意,B 在第三套的开头,而在第二套的结尾。
printline 14 to stdout // 查看从左数第三套中的第四个手办
flush stdout
n = readline_string() // 读取 n=D。沉默寡言的 D,虽然性格内敛,但为了保护朋友和世界而英勇战斗!
printline ABCDE to stdout // 我们鲁莽地猜测,尽管还可以再查看 472 个手办。
flush stdout
verdict = readline_string() // 读取 verdict=N(评测器判定我们的答案错误)
exit // 退出,避免出现超时错误
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号