#P16742. 这是一道交互题

这是一道交互题

这是一道交互题(Hydro 批量交互版)

题目背景

May 和 Cody 正在玩一个猜灯游戏。May 面前有一个长度为 nn 的环,环上每个位置有一盏灯,每盏灯只有亮(11)和灭(00)两种状态。

灯的初始状态由 May 决定,并保证初始时并非所有灯都亮着。在任意时刻,May 都可以任意旋转这个环。

Cody 每轮给出一个长度为 nn0101 序列。对于序列中为 11 的位置,May 会翻转相应位置灯的状态;为 00 的位置不变。由于 May 可以任意旋转环,你也可以理解为:在执行每次操作之前,May 可以将你的操作掩码循环移动任意位。

如果某一轮操作后所有灯都亮起,则 Cody 获胜。

Hydro 适配说明

原题是函数式交互题。为了避免在 Hydro 中进行数千万次进程间交互,本版本改为批量策略交互

  • 交互器只告诉你当前测试点中出现了哪些不同的 nn
  • 对于每个 nn,你一次性提交一整套操作序列;
  • 交互器使用隐藏的初始状态和旋转方案,批量验证该序列;
  • 同一个 nn 的策略会用于该测试点内所有对应的数据组。

满分解法不依赖每轮反馈,因此这一改动保留了原题满分部分的核心要求。

交互协议

交互器首先输出一个整数 UU,表示当前测试点中出现的不同环长数量。

接下来 UU 行,每行两个整数 n,Qn,Q

  • nn 表示环长;
  • QQ 表示你为这个 nn 提交的策略最多可以包含多少次操作。

你必须按照交互器给出的顺序,为每个 nn 输出答案。

不可能通关

如果你认为不存在保证通关的策略,输出:

-1

可以通关

如果你认为存在保证通关的策略,先输出一个整数 kk,满足 1kQ1\le k\le Q;随后输出 kk 个整数

x1,x2,,xk,x_1,x_2,\ldots,x_k,

其中 0xi<2n0\le x_i<2^n

xix_i 写成恰好 nn 位的二进制数,第 jj 位为 11 表示本轮翻转第 jj 个位置,为 00 表示不翻转。位数不足时在高位补零。

这些整数可以分布在任意行中,交互器按空白字符读取。

判定方式

对于每个隐藏数据组,交互器从题目数据中读取:

  • 环长 nn
  • 操作上限 QQ
  • 一个不全为 11 的初始状态。

随后,交互器按照隐藏规则在每轮选择旋转角度,并执行你给出的操作序列。若序列结束后仍未出现所有灯同时亮起,则答案错误。

若你对一个实际可以通关的 nn 输出 -1,或对一个不可能通关的 nn提交策略,同样答案错误。

样例交互

下面的内容只用于说明输入输出格式。实际评测时,程序与交互器通信。

2
2 4
3 8
3
3 1 3
-1

样例说明

对于 n=2n=2,操作序列为:

11, 01, 11

无论初始状态是什么、May 如何旋转,都能在不超过 33 次操作内使两盏灯同时亮起。

对于 n=3n=3,不存在保证成功的策略,因此输出 -1

数据范围

对于全部数据:

1n20.1\le n\le 20.

原始数据共分为 77 个子任务:

子任务 nn QQ 隐藏旋转方式 是否保证可通关 分值
1 2\le 2 10510^5 固定/自适应 20
2 5\le 5 15
3 10\le 10 随机
4 2n2^n 固定/自适应 10
5 20\le 20 随机
6 固定/自适应
7 20

重要提示

  1. 本题在 Hydro 中仍配置为交互题,请勿使用文件输入输出。
  2. 本版本只有一次批量输出阶段,不需要在每个整数后手动刷新;程序结束前正常输出全部内容即可。
  3. 交互器按整数读取,行的划分不影响判定。
  4. 不要试图读取隐藏初始状态;程序只能获得交互器公开的 UUn,Qn,Q