P3294 [SCOI2016] 背单词

题目描述

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

输入格式

输出格式

说明/提示

$1\le n\le100000$,所有字符的长度总和 $1\le \sum|S| \le510000$。