CF1384A Common Prefixes
题目描述
两个字符串 $s = s_1 s_2 \ldots s_n$ 和 $t = t_1 t_2 \ldots t_m$ 的最长公共前缀长度被定义为最大的整数 $k$($0 \le k \le \min(n, m)$),使得 $s_1 s_2 \ldots s_k$ 等于 $t_1 t_2 \ldots t_k$。
考拉 Koa 一开始有 $n+1$ 个字符串 $s_1, s_2, \dots, s_{n+1}$。
对于每个 $i$($1 \le i \le n$),她计算了 $a_i$——即 $s_i$ 和 $s_{i+1}$ 的最长公共前缀长度。
几天后,Koa 找到了这些数字,但她已经不记得原来的字符串了。
现在 Koa 想要找到一些字符串 $s_1, s_2, \dots, s_{n+1}$,使得它们能够生成这些 $a_1, a_2, \dots, a_n$。你能帮帮她吗?
如果有多组答案,输出任意一组即可。可以证明,在给定的约束条件下一定存在解。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 100$)——表示测试用例的组数。接下来是每组测试用例的描述。
每组测试用例的第一行包含一个整数 $n$($1 \le n \le 100$)——表示数组 $a$ 的元素个数。
每组测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le 50$)——表示数组 $a$ 的元素。
保证所有测试用例中 $n$ 的总和不超过 $100$。
输出格式
对于每组测试用例:
输出 $n+1$ 行。在第 $i$ 行输出字符串 $s_i$($1 \le |s_i| \le 200$),字符串仅由小写拉丁字母组成。要求 $s_i$ 和 $s_{i+1}$ 的最长公共前缀长度等于 $a_i$。
如果有多组答案,输出任意一组即可。在给定的约束条件下一定存在解。
说明/提示
在第 $1$ 组测试用例中,一种可能的答案是 $s = [aeren, ari, arousal, around, ari]$。
最长公共前缀的长度如下:
- $aeren$ 和 $ari$ 之间的最长公共前缀长度为 $1$($\color{red}{a}$)
- $ari$ 和 $arousal$ 之间的最长公共前缀长度为 $2$($\color{red}{ar}$)
- $arousal$ 和 $around$ 之间的最长公共前缀长度为 $4$($\color{red}{arou}$)
- $around$ 和 $ari$ 之间的最长公共前缀长度为 $2$($\color{red}{ar}$)
由 ChatGPT 4.1 翻译