CF1070H BerOS File Suggestion

题目描述

Polycarp 正在开发一个名为 BerOS 的新操作系统。他请求你协助实现一个文件建议功能。 硬盘上有 $n$ 个文件,它们的名字分别为 $f_1, f_2, \dots, f_n$。每个文件名的长度在 $1$ 到 $8$ 个字符之间(包含 $1$ 和 $8$)。所有文件名都是唯一的。 文件建议功能需要处理若干查询,每个查询由一个字符串 $s$ 表示。对于每个查询 $s$,你需要统计包含 $s$ 作为子串(即文件名中有一段连续的字符等于 $s$)的文件数量,并输出任意一个匹配的文件名。 例如,如果文件名为 "read.me"、"hosts"、"ops" 和 "beros.18",查询为 "os",则有 $2$ 个文件名包含 "os" 作为子串,建议的文件名可以是 "hosts" 或 "beros.18" 中的任意一个。

输入格式

输入的第一行包含一个整数 $n$($1 \le n \le 10000$),表示文件总数。 接下来的 $n$ 行,每行一个文件名,第 $i$ 行为第 $i$ 个文件的名字 $f_i$。每个文件名长度在 $1$ 到 $8$ 个字符之间,仅包含小写拉丁字母、数字和点号('.')。任意有效字符序列都可以作为文件名(例如,在 BerOS 中,"."、".." 和 "..." 都是有效的文件名)。所有文件名都是唯一的。 接下来一行包含一个整数 $q$($1 \le q \le 50000$),表示查询总数。 接下来的 $q$ 行,每行一个查询 $s_j$,长度在 $1$ 到 $8$ 个字符之间,仅包含小写拉丁字母、数字和点号('.')。

输出格式

输出 $q$ 行,每行对应一个查询。第 $j$ 行应输出两个值 $c_j$ 和 $t_j$,其中: - $c_j$ 表示第 $j$ 个查询匹配的文件数量; - $t_j$ 表示任意一个匹配的文件名。如果没有匹配的文件,则输出一个字符 '-'。如果有多个匹配文件,可以输出任意一个。

说明/提示

由 ChatGPT 4.1 翻译