CF2180B.Ashmal

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Ashmal

题目描述

你有一个由 nn 个字符串 a1,a2,,ana_1, a_2, \ldots, a_n 组成的数组 aa,每个字符串均仅包含小写英文字母,并且有一个空字符串 ss

在第 ii 步(1in1 \le i \le n)时,你可以选择以下两种操作之一:

  • aia_i 添加到 ss 的开头,或者
  • aia_i 添加到 ss 的末尾。

例如,如果在第 ii 步之前 s=abas = \mathtt{aba}ai=bbaa_i = \mathtt{bba},则第 ii 步后 ss 可能为 ababba\mathtt{ababba}bbaaba\mathtt{bbaaba}

你需要求出在经过 nn 步操作后,可以得到的字典序最小的字符串 ss

如果两个长度相同的字符串 aabb,第一个不同的位置处,aa 的字母比 bb 的字母在字母表中更靠前,则称 aa 的字典序小于 bb

输入格式

每个测试点包含多组测试数据。第一行为测试用例数 tt1t5001 \le t \le 500)。接下来的每组测试数据描述如下:

第一行为一个整数 nn1n10001 \le n \le 1000)——数组 aa 的大小。第二行为 nn 个字符串 a1,a2,,ana_1, a_2, \ldots, a_n1ai40001 \le |a_i| \le 4000),每个字符串由小写英文字母组成。

保证所有测试用例中 nn 之和不超过 10001000,输入中所有字符串的总长度不超过 40004000

输出格式

对于每组测试数据,输出经过 nn 步操作后可以得到的字典序最小的字符串 ss

说明/提示

以第一个测试用例为例,构造字典序最小字符串 ss 的一种可能方式如下:

  1. 第一步,无论加到开头还是末尾,s=amirs = \mathtt{amir},因为初始时 ss 为空。
  2. 第二步,将 a2=rimaa_2 = \mathtt{rima} 加到 ss 的末尾,此时 s=amirrimas = \mathtt{amirrima}
  3. 第三步,将 a3=amina_3 = \mathtt{amin} 加到 ss 的开头,此时 s=aminamirrimas = \mathtt{aminamirrima}
  4. 最后一步,将 a4=nimaa_4 = \mathtt{nima} 加到末尾,所以最终 s=aminamirrimanimas = \mathtt{aminamirrimanima}

可以证明,这个结果是可以获得的字典序最小的字符串。

由 ChatGPT 5 翻译

样例

3
4
amir rima amin nima
1
codeforces
3
a ab abc
aminamirrimanima
codeforces
aababc

在线编程 IDE

建议全屏模式获得最佳体验