#P14225. [2026队测系列]星港远征计划之CNOT 派对
[2026队测系列]星港远征计划之CNOT 派对
题目背景
在星港远征计划中,工程师们正在调试一组量子控制节点。系统状态由两个长度为 的二进制串表示:当前状态 和目标状态 。
你拥有 种控制指令。第 种指令会检查第 个节点:只有当该位置当前为 1 时,才能触发对第 个节点的翻转。某些指令甚至可能既检查自己又翻转自己。
你需要判断,是否能在不超过 次操作内把系统从状态 调整到状态 ;如果可以,还要构造出一组可行操作序列。
题目描述
给定两个长度为 的二进制字符串
你可以执行 种操作。第 种操作由一对整数 表示,其含义是:
- 当且仅当当前 时,翻转 的值。
这里“翻转”指的是把 0 变成 1,或把 1 变成 0。
允许出现 的情况。
请判断,是否存在一种方案,能够在对 执行不超过 次操作后,使其变成 。如果存在,请构造其中任意一种。
共有 组测试数据,你需要分别求解。
输入格式
输入从标准输入给出,格式如下:
T
case1
case2
...
caseT
每组测试数据的格式为:
N
A
B
M
x1 y1
x2 y2
...
xM yM
输出格式
按顺序输出 组测试数据的答案。
对于每组测试数据:
- 如果不存在满足条件的操作序列,输出一行
-1; - 否则,设操作序列长度为 ,第 步执行的操作编号为 ,输出:
K
C1 C2 ... CK
其中需要满足:
- ;
- 任何一次执行操作 时,都必须满足当时的 。
样例 #1
输入
3
4
0100
1010
4
1 2
2 1
2 3
4 3
2
10
01
1
1 2
2
01
00
3
1 1
1 2
2 1
输出
3
2 3 1
-1
3
3 2 1
说明
对于第 组测试数据,可以按如下方式操作:
- 初始时,;
- 执行操作 ,得到 ;
- 执行操作 ,得到 ;
- 执行操作 ,得到 。
对于第 组测试数据,无论怎样操作,都无法把 变成 0。
注意:和第 组测试数据一样,允许出现 的情况。
数据范围
- 是长度为 的二进制字符串
- 所有测试数据中 与 的总和不超过
- 均为整数