C. 字符串排序

    传统题 1000ms 256MiB

字符串排序

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

附加文件

题目描述

NN 个字符串,全部由小写字母组成。字符串两两不同。

现在要对它们进行排序。

排序后,每个字符串有一个代价。

对于排在第 ii 个位置的字符串 SS,它的代价计算方法是:

  • 如果在 SS 的前后均不存在字符串是 SS 的后缀,那么 SS 的代价为 ii
  • 如果在 SS 的后面存在字符串是 SS 的后缀,那么不论 SS 的前面是否存在字符串是 SS 的后缀, SS 的代价均为 N2N^2
  • 如果在 SS 的后面不存在字符串是 SS 的后缀,但在 SS 的前面存在字符串是 SS 的后缀,则找到离 SS 最近的那个后缀,记其位置为 jj,那么 SS 的代价为 iji-j

排序总代价为排序后每个字符串的代价之和。

请你找到一种排序方式,使得排序总代价最小。

你只需要输出最小的排序总代价。

输入

第一行:一个整数 NN

接下来 NN 行,每行一个字符串。

输出

一个整数,表示最小的排序总代价。

样例输入

2
a
ba

样例输出

2

样例解释

对于样例中的两个字符串 a , ba,有以下两种排序方式:

1、a , ba

  • a 排在第 1 个位置,前后均不存在它的后缀,所以 a 的代价为 1
  • ba 排在第 2 个位置,前面存在它的后缀 a,离它最近,位置为 1,所以 ba 的代价为 2-1=1

总代价为 1 + 1 = 2;

2、ba , a

  • ba 排在第 1 个位置,后面存在它的后缀 a,所以 ba 的代价为 222^2 =4;
  • a 排在第 2 个位置,前后均不存在它的后缀,所以 a 的代价为 2

总代价为 4 + 2 = 6。

综上,最小的排序总代价为 2。

数据范围

1N100,0001 ≤ N ≤ 100,000,所有字符串的长度之和不超过 600,000600,000

2025-04-24

未参加
状态
已结束
规则
OI
题目
5
开始于
2025-4-24 8:30
结束于
2025-4-24 12:00
持续时间
3.5 小时
主持人
参赛人数
11