AT_arc215_e.[ARC215E] CNOT Party

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

给定两个长度为 NN 的二进制字符串 A=A1A2…ANA = A_1 A_2 \ldots A_N 和 B=B1B2…BNB = B_1 B_2 \ldots B_N。

你可以进行 MM 种不同类型的操作。第 ii 种操作由一对整数 (xi,yi)(x_i, y_i) 表示,1≤xi,yi≤N1 \le x_i, y_i \le N。当 Axi=1A_{x_i} = 1 时,该操作会将 AyiA_{y_i} 的值翻转(00 变为 11,11 变为 00)。允许 xi=yix_i = y_i。这里“翻转”是指将 00 变为 11,将 11 变为 00。

请判断是否有办法最多通过 2N2N 次上述操作,将 AA 变为与 BB 完全相同的字符串。如果可以,请构造出一种可行方案。

共有 TT 组测试数据,请分别解决每一组。

输入格式

输入由标准输入给出,格式如下:

TT case1\text{case}_1 case2\text{case}_2 ⋮\vdots caseT\text{case}_T

每组测试数据格式如下:

NN AA BB MM x1x_1 y1y_1 x2x_2 y2y_2 ⋮\vdots xMx_M yMy_M

输出格式

按顺序输出 TT 组测试数据的答案。

对于每组测试,如果不存在符合要求的操作序列,输出一行 -1。

如果存在一种可行操作方式,假设总共进行了 KK 次操作,分别选择了第 C1,C2,…,CKC_1, C_2, \ldots, C_K 种操作,则输出:

KK C1C_1 C2C_2 …\ldots CKC_K

其中 KK 不超过 2N2N,且在进行第 ii 次操作时,不能使 Axi=0A_{x_i}=0。

输入输出样例

  • 输入#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

    输出#1

    3
    2 3 1
    -1
    3
    3 2 1

说明/提示

样例解释 1

对于第一组测试,操作如下:

  • 初始 A=0100A = 0100。
  • 执行第 22 次操作,A=1100A = 1100。
  • 执行第 33 次操作,A=1110A = 1110。
  • 执行第 11 次操作,A=1010A = 1010。

对于第二组测试,无论如何操作,也无法使 A1A_1 变为 00。

注意,如第三组测试所示,允许 xi=yix_i = y_i。

约束条件

  • 1≤T≤2×1051 \le T \le 2\times 10^5
  • 1≤N≤2×1051 \le N \le 2\times 10^5
  • 1≤M≤2×1051 \le M \le 2\times 10^5
  • AA 与 BB 均为长度为 NN 的二进制串。
  • A≠BA \neq B
  • 1≤xi≤N1 \le x_i \le N (1≤i≤M1 \le i \le M)
  • 1≤yi≤N1 \le y_i \le N (1≤i≤M1 \le i \le M)
  • 所有测试数据中 NN 与 MM 之和不超过 2×1052 \times 10^5。
  • T,N,M,xi,yiT, N, M, x_i, y_i 均为整数。

由 ChatGPT 5 翻译

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

首页