恭喜你发现签到题(sequence)
512MB 3s
题目描述:
本题为交互题。
有一个未知的字符串 S,它的字符集是 {a,b,c},它的长度在 [L,R] 中,其中 L,R 是给定的常数。
为了猜出这个字符串,你可以做若干次询问,每次询问中:
- 你需要给出一个长度不超过 R 的,字符集为 {a,b,c} 的字符串 T;
- 交互库会返回:T 是否是 S 的子序列。
设 S 的实际长度为 n,你需要在 ⌊k×n⌋ 次询问以内得到 S,其中 k 是给定的常数。
注:子序列的定义是由原串删除若干个(可以零个或全部)字符组成的新串,长度为 n 的字符串在不计重复的情况下有 2n 个子序列。
实现方法:
你需要 #include "sequence.h"
。
你需要实现函数 vector <char> Solve (int L,int R,double k)
,其中 L,R,k 的含义如题,这个函数需要返回一个以 vector
存储的字符串,表示你猜出的 S,下标从 0 开始。
你可以调用函数 bool Query (vector <char> T)
,其中 T 表示你询问的字符串,格式同上,该函数返回值为 false 表示 T 不是 S 的子序列,返回值为 true 表示 T 是 S 的子序列。
交互库所用初始化和每次查询的复杂度不超过 O(R)。
数据范围:
【数据范围】
本题采用捆绑测试。
对于 100% 的数据:12≤L≤R≤4000,交互库不会根据程序的提问策略改变 S。
注意:你可以通过 R 的值来判定当前正在处理哪一个子任务。
子任务编号 |
L= |
R= |
k= |
其他性质 |
分值 |
Subtask 1 |
12 |
50000 |
无 |
10 |
Subtask 2 |
100 |
100 |
1000 |
S 中不包含字符 c |
Subtask 3 |
200 |
45.0 |
无 |
20 |
Subtask 4 |
1000 |
2000 |
3.5 |
Subtask 5 |
2000 |
3998 |
2.2 |
10 |
Subtask 6 |
3999 |
1.7 |
S 中不包含字符 c |
Subtask 7 |
4000 |
无 |
20 |