#P14648. [POI 2025/2026 #1] 浏览器 / Przeglądarka internetowa

    ID: 14521 Type: RemoteJudge 3000ms 1024MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>POI(波兰)2025Special Judge

[POI 2025/2026 #1] 浏览器 / Przeglądarka internetowa

题目描述

Bajtosia 正在为信息学课程准备一个演示文稿。为此,她必须访问 nn 个具有两两不同地址的网站,从中获取所需的信息。

Bajtosia 使用的浏览器有一个文本框,初始时包含空串。通过按键可以修改文本框中的内容,并访问地址等于当前文本框中单词的网站。可用的操作如下:

  1. 按键 a\texttt{a}z\texttt{z} 会在当前单词的末尾追加按下的字母。
  2. 按键 BACKSPACE\texttt{BACKSPACE} 删除当前单词的最后一个字母(如果当前单词为空串则什么也不做)。
  3. 按键 ENTER\texttt{ENTER} 会访问地址等于当前单词的网站,然后清空文本框中的单词(即将其变为空串)。
  4. 按键 TAB\texttt{TAB} 会将当前单词自动补全为在所有已经访问过的、以当前单词为前缀(即开头片段)的页面中最近一次访问的那一个页面的地址(如果不存在这样的已访问页面,则什么也不做)。

离提交演示文稿的截止时间已经不多了,因此 Bajtosia 想以尽可能少的按键次数访问所有要求访问的网站。Bajtosia 不能访问除要求访问的网站以外的其他网站。Bajtosia 可以以任意顺序访问这些要求访问的网站,并且每个网站必须被访问恰好一次

请帮助 Bajtosia,求出所需的最小按键次数,以及应该依次按下哪些按键。

输入格式

输入的第一行包含一个整数 nn1n1061 \le n \le 10^6),表示 Bajtosia 需要访问的网站数量。

在接下来的第 ii 行(对于 1in1 \le i \le n)中,给出一个非空字符串 sis_i,由英文小写字母(az\texttt{a}\sim \texttt{z})组成,表示第 ii 个网站的地址。字符串 sis_i 两两不同。

S=s1++snS = |s_1| + \dots + |s_n|,则有 S106S \le 10^6

输出格式

输出的第一行应输出一个整数 kk,表示访问所有给定网站所需的最小按键次数。

输出的第二行应包含一个长度为 kk 的按键序列,即为依次按下的按键,从而能够访问所有给定的网站。按键 BACKSPACEENTERTAB 分别用字母 BET 来表示。

如果存在多个可行解,可以输出其中任意一个。

3
aaaaba
aaaaczzz
aaaadb
21
aaaabaETBBdBETBBczzzE

提示

样例解释

一开始,Bajtosia 逐个字母地在文本框中输入字符串 aaaaba\texttt{aaaaba},然后按下 ENTER\texttt{ENTER}。接着她按下 TAB\texttt{TAB},此时文本框中又出现了字符串 aaaaba\texttt{aaaaba}。然后 Bajtosia 连续两次按下 BACKSPACE\texttt{BACKSPACE},得到 aaaa\texttt{aaaa},再追加两个字母,得到 aaaadb\texttt{aaaadb},之后按下 ENTER\texttt{ENTER}。接下来,她按下 TAB\texttt{TAB},再按两次 BACKSPACE\texttt{BACKSPACE},再次得到 aaaa\texttt{aaaa}。最后 Bajtosia 再输入四个字母得到 aaaaczzz\texttt{aaaaczzz},并最后一次按下 ENTER\texttt{ENTER}

整个过程也在“样例图解”一节的示意图中给出。

大样例

可以在附件中获得大样例。

样例 0a\texttt{0a} 是题面中展示的样例。此外:

  • 0b\texttt{0b}n=26n = 26 个字符串,每个由 2000020\,000 个字符组成。每个字符串的前 1999919\,999 个字符都是字母 a,而它们的最后一个字符依次为英文小写字母 ab、...、z
  • 0c\texttt{0c}n=10n = 10 个字符串,第 ii 个字符串(对于 i=1,,10i = 1, \dots, 10)由字母 'a' 重复 18i18i 次组成。
  • 0d\texttt{0d}n=65534n = 65534 个字符串。输入中包含所有由字母 'a''b' 组成、长度不超过 1515 的非空字符串。
  • 0e\texttt{0e}n=2n = 2 个字符串。两个字符串的长度都是 500000500\,000,并且在前 300000300\,000 个位置上的字母完全相同。在第 300001300\,001 个位置上的字符二者不同。之后的字符是随机的。

子任务

本题采用捆绑测试。

子任务编号 限制 得分
1 n8n \le 8 且对所有 i[1..n]i \in [1..n] 均有 si10\vert s_i\vert \le 10 17
2 所有 sis_i 的长度相同 12
3 S1000S \le 1\,000 32
4 sis_i 只由字母 ab 构成 18
5 无额外限制 21

如果你的输出中只有第一行是正确的,你的解法在该测试上将得到该测试分值的 80%80\%。你不必输出第二行也能获得这些分数。

样例图解

在下面的示意图中,给出了上文所述示例测试的一种解法的各个步骤。

::::align{center} ::::