Lweb 面对如山的英语单词,陷入了深深的沉思:我怎么样才能快点学完,然后去玩三国杀呢?这时候睿智的凤老师从远处飘来,他送给了 Lweb 一本计划册和一大缸泡椒,他的计划册是长这样的:
序号 | 单词 |
---|---|
1 | |
2 | |
\dots | |
n-1 | |
n |
然后凤老师告诉 Lweb ,我知道你要学习的单词总共有 n 个,现在我们从上往下完成计划表,对于一个序号为 x 的单词(序号 1,\dots ,x-1 都已经被填入):
Lweb 是一个吃到辣辣的东西会暴走的奇怪小朋友,所以请你帮助 Lweb ,寻找一种最优的填写单词方案,使得他记住这 n 个单词的情况下,吃最少的泡椒。
形式化题意:
你需要为 n 个字符串排列一个顺序,每个字符串都会产生一定代价。
对于一个字符串 s,其所在位置为 x:
如果存在至少一个其他字符串是 s 后缀,且这个字符串的位置在 s 后面, s 将产生 n \times n 的代价。
如果不存在其他字符串是 s 的后缀,则 s 产生 x 的代价。
如果所有是 s 后缀的字符串的位置都在 s 的前面,若这些字符串的位置的最大值为 y , 则 s 产生 x-y 的代价。
为 n 个字符串排列一个顺序,使总代价最小。
输入一个整数 n ,表示 Lweb 要学习的单词数。
接下来 n 行,每行有一个单词(由小写字母构成,且保证任意单词两两互不相同)。
Lweb 吃的最少泡椒数。
2 a ba
2
1\le n\le100000,所有字符的长度总和 1\le \sum|S| \le510000。
四川省选