#P11652. 恭喜你发现签到题

恭喜你发现签到题

恭喜你发现签到题(sequence\text{sequence}

512MB 3s


题目描述:

本题为交互题。

有一个未知的字符串 SS,它的字符集是 {a,b,c}\text{\{a,b,c\}},它的长度在 [L,R][L,R] 中,其中 L,RL,R 是给定的常数。

为了猜出这个字符串,你可以做若干次询问,每次询问中:

  • 你需要给出一个长度不超过 RR 的,字符集为 {a,b,c}\text{\{a,b,c\}}字符串 TT
  • 交互库会返回:TT 是否是 SS子序列

SS实际长度nn,你需要在 k×n\lfloor k\times n\rfloor 次询问以内得到 SS,其中 kk 是给定的常数。

注:子序列的定义是由原串删除若干个(可以零个或全部)字符组成的新串,长度为 nn 的字符串在不计重复的情况下有 2n2^n 个子序列。

实现方法:

你需要 #include "sequence.h"

你需要实现函数 vector <char> Solve (int L,int R,double k),其中 L,R,kL,R,k 的含义如题,这个函数需要返回一个以 vector 存储的字符串,表示你猜出的 SS,下标从 00 开始。

你可以调用函数 bool Query (vector <char> T),其中 TT 表示你询问的字符串,格式同上,该函数返回值为 false\text{false} 表示 TT 不是 SS 的子序列,返回值为 true\text{true} 表示 TTSS 的子序列。

交互库所用初始化和每次查询的复杂度不超过 O(R)O(R)


数据范围:

【数据范围】

本题采用捆绑测试。

对于 100%100\% 的数据:12LR400012\leq L\leq R\leq 4000,交互库不会根据程序的提问策略改变 SS

注意:你可以通过 RR 的值来判定当前正在处理哪一个子任务。

子任务编号 L=L= R=R= k=k= 其他性质 分值
Subtask 1\text{Subtask 1} 1212 5000050000 1010
Subtask 2\text{Subtask 2} 100100 100100 10001000 SS 中不包含字符 c\texttt{c}
Subtask 3\text{Subtask 3} 200200 45.045.0 2020
Subtask 4\text{Subtask 4} 10001000 20002000 3.53.5
Subtask 5\text{Subtask 5} 20002000 39983998 2.22.2 1010
Subtask 6\text{Subtask 6} 39993999 1.71.7 SS 中不包含字符 c\texttt{c}
Subtask 7\text{Subtask 7} 40004000 2020