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 翻译