CF2096G.Wonderful Guessing Game

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

这是一道交互题。

你是千年科学学校的一名自豪的教师。今天,一名叫 Alice 的学生向你发起了一个猜数游戏的挑战。

Alice 心中想着一个 11 到 nn 之间的整数,你必须通过向她提出一些查询来猜出这个数。

为了增加难度,她要求你必须先提出所有查询,而她将忽略其中的恰好 11 个查询。

对于每个查询,你需要选择一个由 11 到 nn 之间的 kk 个不同整数组成的数组,其中 kk 是偶数。然后,Alice 会给出以下回应之一:

  • L\texttt{L}:这个数位于数组的前 k2\frac{k}{2} 个元素中;
  • R\texttt{R}:这个数位于数组的后 k2\frac{k}{2} 个元素中;
  • N\texttt{N}:这个数不在数组中;
  • ?\texttt{?}:这个查询被忽略。

Alice 很没耐心,因此你必须找到一种策略,使得查询次数最少。你能做到吗?

形式化地说,设 f(n)f(n) 为确定 Alice 的数字所需的最小查询次数。你需要找到一种恰好使用 f(n)f(n) 次查询的策略。

注意,交互器是自适应的,这意味着 Alice 的数字并非一开始就固定,可能会根据你的查询而变化。然而,保证至少存在一个数字与 Alice 的回应一致。

我们可以证明,对于所有满足 2≤n≤2⋅1052 \le n \le 2 \cdot 10^5 的 nn,f(n)≤20f(n) \leq 20。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例的唯一一行包含一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5)——Alice 的数字的最大可能值。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

交互开始时,先读取整数 nn。

然后,输出一个整数 qq(1≤q≤201 \leq q \leq 20)——查询的次数。

要提出一个查询,请按以下格式输出一行:

  • k a1 a2…akk\,a_1\,a_2 \ldots a_k(2≤k≤n2 \leq k \leq n,kk 是偶数,1≤ai≤n1 \leq a_i \leq n,aia_i 互不相同)——数组的长度和数组本身。

在提出所有 qq 次查询后,读取一个字符串 ss(∣s∣=q|s| = q)——Alice 对查询的回应,如上所述。

当你确定 Alice 的数字时,输出一个整数 xx(1≤x≤n1 \leq x \leq n)——这个数字的值。

然后,继续处理下一个测试用例,如果没有更多测试用例,则终止程序。

在输出所有 qq 次查询后,不要忘记输出换行并刷新输出。否则,你将得到 Idleness limit exceeded。为此,请使用:

  • C++ 中的 fflush(stdout) 或 cout.flush();
  • Java 中的 System.out.flush();
  • Pascal 中的 flush(output);
  • Python 中的 stdout.flush();
  • 其他语言的类似方法。

注意,即使你正确猜出了 Alice 的数字,但如果使用的查询次数超过了 f(n)f(n),你也会得到 Wrong answer。

本题禁用 hack。

输入输出样例

  • 输入#1

    2
    3
    
    
    
    ?N
    
    5
    
    
    
    
    R?L

    输出#1

    2
    2 1 2
    2 1 2
    
    3
    
    3
    4 3 2 4 1
    4 5 4 3 1
    4 1 5 3 4
    
    1

说明/提示

在第一个测试用例中,n=3n = 3。我们提出了 22 次查询:[1,2][1, 2] 和再次的 [1,2][1, 2]。

  • 对于第一次查询,Alice 的回应是 ?\texttt{?},表示这次查询被忽略。
  • 对于第二次查询,Alice 的回应是 N\texttt{N},表示她的数字不在数组 [1,2][1, 2] 中。

根据以上信息,我们可以确定 Alice 的数字是 33。

可以证明,对于 n=3n = 3,所有有效策略至少需要 22 次查询。

在第二个测试用例中,n=5n = 5。我们提出了 33 次查询:[3,2,4,1][3, 2, 4, 1]、[5,4,3,1][5, 4, 3, 1] 和 [1,5,3,4][1, 5, 3, 4]。

  • 对于第一次查询,Alice 的回应是 R\texttt{R},表示她的数字在数组 [4,1][4, 1] 中。
  • 对于第二次查询,Alice 的回应是 ?\texttt{?},表示这次查询被忽略。
  • 对于第三次查询,Alice 的回应是 L\texttt{L},表示她的数字在数组 [1,5][1, 5] 中。

根据以上信息,我们可以确定 Alice 的数字是 11。

可以证明,对于 n=5n = 5,所有有效策略至少需要 33 次查询。

翻译由 DeepSeek V3 完成

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

首页