CFCF2164D.Copy String

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

给定两个长度为 nn 的字符串 sstt,你需要通过一系列以下操作将 ss 变换为 tt

  • 构造一个新的长度为 nn 的字符串 ss',其中 s1=s1s'_1 = s_1。对于每个 1<in1 < i \le nsis'_i 可以是 sis_isi1s_{i-1}。然后用 ss' 替换 ss

你的任务是用最少的操作次数完成这个变换,并在每一步输出构造后的字符串 ss'。如果无法在不超过 kmaxk_{\mathrm{max}} 次操作内实现该变换,则输出 -1。

输入格式

每个测试包含多组数据。第一行输入一个整数 tt1t1041\le t\le 10^4),表示测试组数。

每组测试用以下形式描述:

第一行输入两个整数 nnkmaxk_{\mathrm{max}}1nkmax1061\le n\cdot k_{\mathrm{max}}\le 10^6),分别表示字符串的长度和最多允许操作的次数。

第二行输入一个长度为 nn 的字符串 ss

第三行输入一个长度为 nn 的字符串 tt

保证所有测试数据中 nkmax106\sum nk_{\mathrm{max}}\le 10^6

保证 sstt 都只包含小写拉丁字母。

输出格式

对于每组测试数据:

  • 若无法在不超过 kmaxk_{\mathrm{max}} 次操作内将 ss 变换为 tt,则输出一行 -1。
  • 否则,第一行输出一个整数 kkmaxk\le k_{\mathrm{max}},表示最少所需操作次数。接下来的 kk 行,每行输出操作后的长度为 nn 的字符串,即每次操作后的字符串。

如果有多种方案,输出任意一种均可。

输入输出样例

  • 输入#1

    7
    4 1
    abcd
    aabd
    2 2
    ab
    ab
    5 3
    abcde
    abbcc
    9 1
    egcnyeluw
    eegccyelw
    10 3
    vzvylxxmsy
    vvvvvllxxx
    4 6
    acba
    aaac
    5 7
    acabb
    aaaca

    输出#1

    1
    aabd
    0
    2
    abbcd
    abbcc
    -1
    3
    vvzvylxxms
    vvvzvllxxm
    vvvvvllxxx
    2
    aacb
    aaac
    2
    aacab
    aaaca

说明/提示

在第一个测试用例中,显然 ss 可以在一次操作内变成 tt

在第二个测试用例中,最开始就有 s=ts=t,因此不需要任何操作。

在第四个测试用例中,虽然 ss 可以通过两次操作变成 tt,但是 kmax=1k_{\mathrm{max}}=1,因此答案为 -1。

首页