最长公共前缀是指两个单词从第一个位置开始的最长公共部分。例入:单词 “identity” 和“idealistic” 的最长公共前缀为单词”ide”.一个数据库里有N个单词。 现在要统计如果我们顺次在数据库里查找单词 W (直到找到或数库里的单词都比较完了),共要比较多少次。比较时一个单词一个单词的比较,两个单词不同必须要比较到它们在某一位上不同或其中一个单词结束为止。分析算法我们发现比较次数等于找到单词W时比较的单词个数加上单词W与这些单词的最长公共前缀之和。
编程统计每个给定的单词的查找次数。
输入:
第一行一个整数 N (1 ≤ N ≤ 30 000),表示数据库中单词的个数。
接下来N行,每行一个单词。(单词按比较的顺序给出,且不重复)
接下来一行一个整数Q (1 ≤ Q ≤ 30 000), 表示要询问的单词个数。
接下来Q行每行一个单词。
注意:所有单词是长度小于30且都是小写字母。
输出:
Q行,每行一个整数,依次表示每个单词要比较的次数。
样例:
输入:
5
hobotnica
robot
hobi
hobit
robi
4
robi
hobi
hobit
rakija
输出:
12
10
16
7
输入:
8
majmunica
majmun
majka
malina
malinska
malo
maleni
malesnica
3
krampus
malnar
majmun
输出:
8
29
14
在第二个样例中,单词 "krampus"的比较次数为 8,是因为我们要比较所有单词。当找单词 "malnar"时,我们在前3个单词都要比3步,剩下的5个单词都要比4步,所以总数为29.在找单词 "majmun"时,我们比较第一个单词要6步就比较完单词,但还得用1次比较第一个单词没完的部分,第二个单词我们用6步比较了完单词,但还得用一步比较两个单词是否都结束,因此是14步。
时间限制:2 s
空间限制:32 MB