#P5410. 【模板】扩展 KMP / exKMP(Z 函数)

【模板】扩展 KMP / exKMP(Z 函数)

【模板】扩展 KMP / exKMP(Z 函数)

  • 时间限制:5 秒
  • 内存限制:512 MiB

题目描述

给定两个字符串 a,ba,b,请计算两个数组:

  • bb 的 Z 函数数组 zz,其中 ziz_ibb 与从位置 ii 开始的后缀的最长公共前缀长度;
  • 扩展数组 pp,其中 pip_ibbaa 中从位置 ii 开始的后缀的最长公共前缀长度。

数组下标从 11 开始。对于长度为 nn 的数组 xx,定义其权值为

xori=1ni×(xi+1).\mathop{\mathrm{xor}}_{i=1}^{n} i\times(x_i+1).

输入格式

第一行包含字符串 aa,第二行包含字符串 bb

两个字符串均非空,且只包含小写英文字母。

输出格式

第一行输出数组 zz 的权值。

第二行输出数组 pp 的权值。

样例输入 1

aaaabaa
aaaaa

样例输出 1

6
21

样例解释

z={5,4,3,2,1}z=\{5,4,3,2,1\}p={4,3,2,1,0,2,1}p=\{4,3,2,1,0,2,1\}

数据范围

对于所有数据,1a,b2×1071\le \lvert a\rvert,\lvert b\rvert\le 2\times10^7

子任务编号 分值 特殊限制
1 20 a,b2×103\lvert a\rvert,\lvert b\rvert\le 2\times10^3
2 40 a,b2×105\lvert a\rvert,\lvert b\rvert\le 2\times10^5
3 无特殊限制