注意:这是一道交互题! 如果你不知道你应该怎么做,不要恐慌,下面会解释。如果不懂也可以在群里问。
ddd在动物园,看到了一只斑马。斑马的条纹是一个长度为 1000 的 01 串。 你想要知道这个串,但ddd并不打算就这么简单地告诉你真相,他计划和你玩一个游戏。
你的任务是实现一个函数:
std::string guess()
该函数应当返回ddd得到的 01 串。 你可以调用以下函数来向ddd询问该串的相关信息:
int query(int l, int r)
你必须保证 0≤l≤r<n0 \le l \le r < n0≤l≤r<n ,该函数有 50%50\%50% 的概率返回 [l,r][l,r][l,r] 中数字 111 的个数 mmm ,另 50%50\%50% 的概率返 回 [0,m−1]∪[m+1,r−l+1][0,m − 1] ∪ [m + 1,r − l + 1][0,m−1]∪[m+1,r−l+1] 中的一个随机整数。请注意:对一组 l,rl,rl,r 你只能询问至多一次。 你可以参考样例交互库对上述描述进行理解。
本题不需要你输出任何内容。你也不能进行输出,不然获得0分。
本题共包括 111 个测试点,我们会对你的函数进行不超过 100100100 次调用,我们允许你出现不超过 222 次答 案错误的情况,否则你将得到 000 分。否则,不妨设你最多一次调用了 TTT 次 query 函数,TTT必须小于等于600060006000,不然你依然获得0分。
query
在下发文件中,我们提供了 guess.h, grader.cpp, guess.cpp 三个文件,你最终提交的代码应当包含在 guess.cpp 中,并包含头文件 guess.h。 如果你想要命令行编译你的代码,应当执行:g++ guess.cpp grader.cpp -o guess -O2 -std=c++11。
guess.h, grader.cpp, guess.cpp
guess.cpp
guess.h
g++ guess.cpp grader.cpp -o guess -O2 -std=c++11
你可以使用下发的文件进行本机测试,获得自己程序的大概运行次数。