CF2038G.Guess One Character
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是一个交互题。你需要在每次输出后立即进行刷新操作。例如,在 C++ 中应使用函数 fflush(stdout) 或 cout.flush(),在 Java 或 Kotlin 中使用 System.out.flush(),在 Python 中使用 sys.stdout.flush()。
评测程序有一个由字符 0 和/或 1 组成的字符串 s,其长度为 n。
你可以进行如下询问:
- 1 t —— “字符串 t 在 s 中作为连续子串出现了多少次?”其中 t 是一个由 0 和/或 1 组成的字符串,长度至少为 1,至多为 n。例如,如果 s=111011,t=11,则该询问的答案为 3。
你需要通过不超过 3 次询问,猜出字符串 s 中至少一个字符。注意,给出答案不计入询问次数。
在每个测试和每个测试用例中,字符串 s 都是预先固定的。
输入格式
评测程序首先输出一个整数 t(1≤t≤1000),表示测试用例的数量。
在每个测试用例开始时,评测程序输出一个整数 n(2≤n≤50),表示字符串的长度。
之后,你的程序可以向评测程序提交如下格式的询问(每次输出后请务必刷新输出):
- 1 t,表示询问“字符串 t 在 s 中作为连续子串出现了多少次?”
对于每个询问,评测程序会在单独一行输出一个整数,可能为:
- 该询问的答案(如果询问合法且未超过本用例的询问次数限制);
- 或 −1,如果询问不合法(例如 1≤∣t∣≤n 不满足,或 t 中包含非 0 或 1 的字符),或者在当前测试用例中询问次数已超限。
要提交答案,你的程序应输出如下格式的一行(输出后请务必刷新输出):
- 0 i c,其中 1≤i≤n,c 为 0 或 1,表示你猜测 si=c。
如果你的猜测正确,评测程序会在单独一行输出 1,表示你可以进入下一个测试用例(或程序结束,如果已是最后一个用例),且询问次数重置。如果猜测错误,评测程序会输出 −1。
当你的程序收到 −1 作为响应时,应立即终止程序,否则会被判为“Wrong Answer”。如果程序未终止,评测结果将不确定。
输出格式
无。
输入输出样例
输入#1
3 // 3 test cases 3 // the length of the string is 3 1 // 101 occurs once 1 // guessed correctly 2 // the length of the string is 2 0 // 00 occurs zero times 0 // 0 occurs zero times 1 // guessed correctly 2 // the length of the string is 2 1 // 1 occurs once 0 // 01 occurs zero times 1 // guessed correctly
输出#1
1 101 // how many times 101 occurs 0 2 0 // guess: s[2] is 0 1 00 // how many times 00 occurs 1 0 // how many times 0 occurs 0 1 1 // guess: s[1] is 1 1 1 // how many times 1 occurs 1 01 // how many times 01 occurs 0 2 0 // guess: s[2] is 0
说明/提示
例如,有 3 个测试用例:101、11 和 10。注意,所有 // 后的内容都是注释,用于解释每一行的含义,实际评测程序不会输出这些注释,你的程序也不应输出。空行仅为方便阅读,实际评测程序不会输出空行,你的程序也不应输出空行。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?