A16758 | Copy String
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
给定两个长度为 $n$ 的字符串 $s$ 和 $t$,你需要通过一系列以下操作将 $s$ 变换为 $t$:
- 构造一个新的长度为 $n$ 的字符串 $s'$,其中 $s'_1 = s_1$。对于每个 $1 < i \le n$,$s'_i$ 可以是 $s_i$ 或 $s_{i-1}$。然后用 $s'$ 替换 $s$。
你的任务是用最少的操作次数完成这个变换,并在每一步输出构造后的字符串 $s'$。如果无法在不超过 $k_{\mathrm{max}}$ 次操作内实现该变换,则输出 -1。
- 构造一个新的长度为 $n$ 的字符串 $s'$,其中 $s'_1 = s_1$。对于每个 $1 < i \le n$,$s'_i$ 可以是 $s_i$ 或 $s_{i-1}$。然后用 $s'$ 替换 $s$。
你的任务是用最少的操作次数完成这个变换,并在每一步输出构造后的字符串 $s'$。如果无法在不超过 $k_{\mathrm{max}}$ 次操作内实现该变换,则输出 -1。
输入格式
每个测试包含多组数据。第一行输入一个整数 $t$($1\le t\le 10^4$),表示测试组数。
每组测试用以下形式描述:
第一行输入两个整数 $n$、$k_{\mathrm{max}}$($1\le n\cdot k_{\mathrm{max}}\le 10^6$),分别表示字符串的长度和最多允许操作的次数。
第二行输入一个长度为 $n$ 的字符串 $s$。
第三行输入一个长度为 $n$ 的字符串 $t$。
保证所有测试数据中 $\sum nk_{\mathrm{max}}\le 10^6$。
保证 $s$ 和 $t$ 都只包含小写拉丁字母。
每组测试用以下形式描述:
第一行输入两个整数 $n$、$k_{\mathrm{max}}$($1\le n\cdot k_{\mathrm{max}}\le 10^6$),分别表示字符串的长度和最多允许操作的次数。
第二行输入一个长度为 $n$ 的字符串 $s$。
第三行输入一个长度为 $n$ 的字符串 $t$。
保证所有测试数据中 $\sum nk_{\mathrm{max}}\le 10^6$。
保证 $s$ 和 $t$ 都只包含小写拉丁字母。
输出格式
对于每组测试数据:
- 若无法在不超过 $k_{\mathrm{max}}$ 次操作内将 $s$ 变换为 $t$,则输出一行 -1。
- 否则,第一行输出一个整数 $k\le k_{\mathrm{max}}$,表示最少所需操作次数。接下来的 $k$ 行,每行输出操作后的长度为 $n$ 的字符串,即每次操作后的字符串。
如果有多种方案,输出任意一种均可。
- 若无法在不超过 $k_{\mathrm{max}}$ 次操作内将 $s$ 变换为 $t$,则输出一行 -1。
- 否则,第一行输出一个整数 $k\le k_{\mathrm{max}}$,表示最少所需操作次数。接下来的 $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$,但是 $k_{\mathrm{max}}=1$,因此答案为 -1。
在第二个测试用例中,最开始就有 $s=t$,因此不需要任何操作。
在第四个测试用例中,虽然 $s$ 可以通过两次操作变成 $t$,但是 $k_{\mathrm{max}}=1$,因此答案为 -1。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?