CF2038G.Guess One Character

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是一个交互题。你需要在每次输出后立即进行刷新操作。例如,在 C++ 中应使用函数 fflush(stdout) 或 cout.flush(),在 Java 或 Kotlin 中使用 System.out.flush(),在 Python 中使用 sys.stdout.flush()。

评测程序有一个由字符 00 和/或 11 组成的字符串 ss,其长度为 nn。

你可以进行如下询问:

  • 1 t1\ t —— “字符串 tt 在 ss 中作为连续子串出现了多少次?”其中 tt 是一个由 00 和/或 11 组成的字符串,长度至少为 11,至多为 nn。例如,如果 s=111011s=111011,t=11t=11,则该询问的答案为 33。

你需要通过不超过 33 次询问,猜出字符串 ss 中至少一个字符。注意,给出答案不计入询问次数。

在每个测试和每个测试用例中,字符串 ss 都是预先固定的。

输入格式

评测程序首先输出一个整数 tt(1≤t≤10001 \le t \le 1000),表示测试用例的数量。

在每个测试用例开始时,评测程序输出一个整数 nn(2≤n≤502 \le n \le 50),表示字符串的长度。

之后,你的程序可以向评测程序提交如下格式的询问(每次输出后请务必刷新输出):

  • 1 t1\ t,表示询问“字符串 tt 在 ss 中作为连续子串出现了多少次?”

对于每个询问,评测程序会在单独一行输出一个整数,可能为:

  • 该询问的答案(如果询问合法且未超过本用例的询问次数限制);
  • 或 −1-1,如果询问不合法(例如 1≤∣t∣≤n1 \le |t| \le n 不满足,或 tt 中包含非 00 或 11 的字符),或者在当前测试用例中询问次数已超限。

要提交答案,你的程序应输出如下格式的一行(输出后请务必刷新输出):

  • 0 i c0\ i\ c,其中 1≤i≤n1 \le i \le n,cc 为 00 或 11,表示你猜测 si=cs_i = c。

如果你的猜测正确,评测程序会在单独一行输出 11,表示你可以进入下一个测试用例(或程序结束,如果已是最后一个用例),且询问次数重置。如果猜测错误,评测程序会输出 −1-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

说明/提示

例如,有 33 个测试用例:101、11 和 10。注意,所有 // 后的内容都是注释,用于解释每一行的含义,实际评测程序不会输出这些注释,你的程序也不应输出。空行仅为方便阅读,实际评测程序不会输出空行,你的程序也不应输出空行。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页