CFCF2164D.Copy String
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定两个长度为 n 的字符串 s 和 t,你需要通过一系列以下操作将 s 变换为 t:
- 构造一个新的长度为 n 的字符串 s′,其中 s1′=s1。对于每个 1<i≤n,si′ 可以是 si 或 si−1。然后用 s′ 替换 s。
你的任务是用最少的操作次数完成这个变换,并在每一步输出构造后的字符串 s′。如果无法在不超过 kmax 次操作内实现该变换,则输出 -1。
输入格式
每个测试包含多组数据。第一行输入一个整数 t(1≤t≤104),表示测试组数。
每组测试用以下形式描述:
第一行输入两个整数 n、kmax(1≤n⋅kmax≤106),分别表示字符串的长度和最多允许操作的次数。
第二行输入一个长度为 n 的字符串 s。
第三行输入一个长度为 n 的字符串 t。
保证所有测试数据中 ∑nkmax≤106。
保证 s 和 t 都只包含小写拉丁字母。
输出格式
对于每组测试数据:
- 若无法在不超过 kmax 次操作内将 s 变换为 t,则输出一行 -1。
- 否则,第一行输出一个整数 k≤kmax,表示最少所需操作次数。接下来的 k 行,每行输出操作后的长度为 n 的字符串,即每次操作后的字符串。
如果有多种方案,输出任意一种均可。
输入输出样例
输入#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
说明/提示
在第一个测试用例中,显然 s 可以在一次操作内变成 t。
在第二个测试用例中,最开始就有 s=t,因此不需要任何操作。
在第四个测试用例中,虽然 s 可以通过两次操作变成 t,但是 kmax=1,因此答案为 -1。