#tRIEybttg020307. 1477:【SCOI2016】背单词
1477:【SCOI2016】背单词
好的,我将题目中的数字和名称用 标出。
题目描述
Lweb 面对 个英语单词,他想按某种顺序把它们填入计划表(一个 到 的排列)。
对于某个单词 (假设它被填入的位置编号是 ,并且 的位置已经被填入单词):
-
如果存在一个单词是它的后缀,并且那个单词当前还没有被填入表内(即还在后面),那么他需要吃 颗泡椒才能学会这个单词。
(这一情况要尽量避免,因为代价太大) -
当它的所有后缀都已经被填入表内时:
- 如果 的位置上的单词都不是它的后缀,那么他吃 颗泡椒就能记住它。
- 如果 的位置上存在是它后缀的单词,取其中序号最大的为 ,那么他只要吃 颗泡椒就能记住它。
目标是找到一种填入单词的顺序,使得总共吃的泡椒数最少。
注意:单词两两不同,单词由小写字母组成。
输入格式
第一行一个整数 ,表示单词数。
接下来 行,每行一个单词(小写字母组成,保证任意两个单词不同)。
输出格式
输出一个整数,表示 Lweb 吃的最少泡椒数。
数据范围
- 所有单词总长度
输入样例
2
a
ba
输出样例
2
样例解释
单词:, 。
注意 是 的后缀。
如果先填 (位置 ),再填 (位置 ):
- 没有后缀已被填入 → 情况 2 第一类:吃 颗泡椒。
- 的后缀 已填入(位置 )→ 情况 2 第二类:, ,吃 颗泡椒。
总泡椒 。
如果先填 (位置 ),再填 (位置 ):
- 没有后缀已被填入 → 情况 2 第一类:吃 颗泡椒。
- 有后缀()还没填入?错, 的后缀是空串还是 本身?这里是 的后缀是 ,而 的后缀是空串,所以 的后缀都已填入(空串已经“被填入”,视为满足条件吗?题目说的后缀是单词,空串不是单词)。再仔细:对 来说,它的后缀是空串(不算单词)和 本身(但自身不算后缀吗?题目中的“后缀”指的是其他单词是自己的后缀)。这里 是 的后缀,但 没有后缀是其他单词,所以 的所有后缀都已填入(其实没有后缀单词)。
那么 符合情况 2 第一类?因为 只有 ,而 不是 的后缀。所以吃 颗泡椒。
总泡椒 ,比第一种方案差。
所以最少 。
这样题目就完整了,所有数字和名称都用 标出。