AT_arc207_e.[ARC207E] Erase and Append

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给定长度为 NN 的仅由 0 和 1 组成的字符串 ss 和 tt。你需要判断是否可以通过下述操作至少 00 次且最多 N+1N+1 次,将 ss 变为 tt,并在可能的情况下给出一种操作序列。

操作:依次执行以下步骤。

  1. 选择满足 1≤a,b≤N1 \le a, b \le N 且 ∣a−b∣=1|a - b| = 1 的整数 aa 和 bb。
  2. 将 ss 的第 aa 个字符(从左到右)追加到 ss 的末尾。
  3. 从 ss 的开头移除第 bb 个字符,并保持剩余字符的原有顺序。

给定 TT 组测试数据,对于每组测试数据,判断能否通过上述操作将 ss 变为 tt。

输入格式

输入从标准输入获取,格式如下:

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

每组测试数据格式如下:

NN ss tt

输出格式

按输入顺序输出每组测试数据的答案。若无法通过至多 N+1N+1 次操作将 ss 变为 tt,则输出 -1。若可以实现,先输出操作次数 KK,随后 KK 行每行两个空格分隔的整数 aja_j 和 bjb_j,表示第 jj 步操作选择的 aa 和 bb。

输入输出样例

  • 输入#1

    3
    5
    00101
    00010
    2
    01
    01
    2
    00
    11

    输出#1

    1
    2 3
    0
    -1

说明/提示

样例解释 1

第一组数据中,ss 为 00101,tt 为 00010。

  • 选择 a=2a=2 和 b=3b=3,将第 22 个字符 0 追加到末尾,再移除第 33 个字符,可以将 ss 变为 tt。
  • 注意:每次操作选择的 aa 和 bb 必须满足 ∣a−b∣=1|a-b|=1。

第二组数据中,ss 和 tt 已经相同,无需任何操作。

第三组数据中,不论如何操作,都无法将 ss 变为 tt。

数据范围

  • 1≤T≤1051 \le T \le 10^{5}
  • 2≤N≤2×1052 \le N \le 2 \times 10^{5}
  • ss 和 tt 是长度为 NN 的仅包含 0 和 1 的字符串。
  • 所有测试数据中 NN 的总和不超过 2×1052 \times 10^{5}。

由 ChatGPT 5 翻译

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

首页