你在玩一个动作游戏。游戏控制器有 A
、B
、X
和 Y
。在游戏中,你用组合动作来赚金币。你可以依次按这些按键来完成一个组合动作。
这个游戏有一个隐藏的按键序列,可以表示为由这
你还知道,ABXYY
”或者“XYYAA
”,但不能是“AAAAA
”或“BXYBX
”。
你可以依次按最多
例如,如果 ABXYY
”,而 XXYYABYABXAY
”,你会得到 ABX
”是可作为
你的任务是,用少量的组合动作,找出隐藏字符串
实现细节
你需要实现下面的函数:
std::string guess_sequence(int N)
N
:串 的长度。- 对每个测试用例,该函数被调用恰好一次。
- 该函数应返回串
。
你的程序可以调用下面的函数:
int press(std::string p)
p
:你的按键序列。p
必须是长度为从 到 的串(包括 和 )。p
的每个字符必须是A
、B
、X
或者Y
。- 对每个测试用例,你调用该函数的次数不能超过
次。 - 该函数的返回结果是,当按出按键序列
p
后你赚到的金币数量。
如果不满足上面的条件,你的程序将被判为 Wrong Answer
。否则,你的程序将被判为 Accepted
,而你的得分将根据 press
的调用次数来计算(参见子任务)。
例子
设 ABXYY
”。评测程序调用了 guess_sequence(5)
。数据交互过程的例子如下所示:
调用 | 返回值 |
---|---|
| |
| |
| |
| |
| |
| |
| |
| |
对于 press
的第 ABX
”是“XXYYABYABXAY
”的子串,而“ABXY
”不是,因此返回
对于 press
的第 ABXYY
”本身是“ABXYYABXYY
”的子串,因此返回
对于 press
的第 ABXYY
”的其他前缀可以是“BXYY
”的子串,因此返回
最后,guess_sequence(5)
应当返回“ABXYY
”。
在样例数据下载中的文件ex_combo1.in
对应于本例。注意:样例包中的输出没有任何意义。
限制条件
- 串
的每个字符必须是A
、B
、X
或Y
。 的首字符不会再 中重复出现。
在本题中,评测程序不是适应性的。意思是说,在评测程序开始运行的时候
子任务
- (5分)
- (95分)没有附加限制。对该子任务,你在每个测试用例上的得分将计算如下。设
为调用press
的次数。- 如果
,你的得分为 。 - 如果
,你的得分为 。 - 如果
,你的得分为 。 - 如果
,你的得分为 。 - 否则,你的得分为
。
- 如果
注意,你在每个子任务上的得分,等于你在该子任务下所有测试用例上的最低得分。
请注意:在测试中,如果你的程序的询问次数超过
评测程序示例
评测程序示例将读取如下格式的输入:
- 第
行:
如果你的程序被判为 Accepted
,评测系统示例将打印出 Accepted: q
,这里 q
为函数 press
的调用次数。
如果你的程序被判为 Wrong Answer
,它打印出 Wrong Answer: MSG
。各类 MSG
的含义如下:
invalid press
:输入到press
的值p
是无效的。也就是说,p
的长度不在 到 之间(含 和 ),或者p
的某些字符不是A
、B
、X
和Y
。too many moves
:函数press
的调用次数超过 次。wrong guess
:guess_sequence
返回的不是 。
约定及限制
对于所支持的各种编程语言,下面列出了对应的数据类型。对于数据类型的细节等,参见实现示例。
语言 | 数组 |
||||
---|---|---|---|---|---|
时间限制:
空间限制: