题目描述
给出 n 个字符串,第 i 个字符串为 si。
定义函数 f(i,j) 的计算方式如下:
-
只考虑前 i 个给出的字符串。
-
将字符串划分出若干组,每组有恰好 j 个字符串。
-
一组的值为这组所有字符串的最长公共前缀 (lcp) 的长度,一个划分方案的值为所有组的值的和。
-
f(i,j) 为最大的划分方案的值。
对于 1≤i≤n,求出 ⨁j=1i(f(i,j)×j),⨁ 表示整数二进制异或运算。
本题采用子任务捆绑测试。
输入格式
第一行一个整数 taskid ,表示子任务编号。 taskid=0 表示样例。
接下来一行一个整数 n,表示字符串的数量。
接下来 n 行,每行一个字符串,表示 si。
输出格式
输出 n 行,每行一个整数,第 i 行输出的整数表示 ⨁j=1i(f(i,j)×j)。
样例
样例输入 1
0
5
aa
ab
ab
ac
d
样例输出 1
2
6
1
9
8
其余样例见下发文件。
-
ex_journey2 与子任务 1 的限制一致,
-
ex_journey3 与子任务 4 的限制一致,
-
ex_journey4 与子任务 5 的限制一致,
时空限制与数据范围
2s, 1024MB
记 S=∑i=1n∣si∣
对于所有的数据:
- n≤5×105,S≤106
| 子任务编号 |
n≤ |
S≤ |
特殊性质 |
分值 |
| 1 |
100 |
1000 |
无 |
5 |
| 2 |
5000 |
50000 |
15 |
| 3 |
5×105 |
5×105 |
A |
10 |
| 4 |
105 |
B |
15 |
| 5 |
2×105 |
无 |
20 |
| 6 |
5×105 |
106 |
35 |
特殊性质 A: si= a,
特殊性质 B: ∣si∣≤5。