#P13812. [CERC 2022] Insertions

[CERC 2022] Insertions

Description

给定三个字符串 ssttpp。我们用竖线表示字符串的长度,例如 s|s| 表示 ss 的长度,依此类推。如果我们将 tt 插入到 ss 的第 kk 个位置(0ks0 \leq k \leq |s|),则结果是一个新字符串:它由 ss 的前 kk 个字符、接着整个 tt,最后是 ss 剩下的 sk|s| - k 个字符组成。我们希望选择一个 kk,使得新字符串中作为子串的 pp 出现次数尽可能多。

例如,将 t=abat = \text{aba} 插入 s=abs = \text{ab} 的位置 k=0k = 0,得到字符串 abaab\text{abaab};插入位置 k=1k = 1,得到字符串 aabab\text{aabab};插入位置 k=2k = 2,得到字符串 ababa\text{ababa}。如果我们关注 p=abap = \text{aba} 的出现次数,最佳插入位置是 k=2k = 2,此时有两次出现:ababa\text{ababa}ababa\text{ababa}(如本例所示,pp 的出现可以重叠)。如果我们关注 p=aap = \text{aa},则最佳插入位置是 k=0k = 0k=1k = 1,此时 pp 出现一次,而 k=2k = 2pp 出现 00 次。

Input Format

第一行输入字符串 ss,第二行输入字符串 tt,第三行输入字符串 pp

Output Format

输出一行,包含四个用空格分隔的整数:

  1. 经过合理选择 kk 后,插入 ttss 中能得到的 pp 作为子串的最大出现次数。
  2. 能达到最大出现次数的不同 kk 的个数(kk 的取值范围为 0,1,,s0, 1, \ldots, |s|)。
  3. 能达到最大出现次数的最小 kk
  4. 能达到最大出现次数的最大 kk
ab
aba
aba
2 1 2 2
abaab
aba
ababa
1 3 1 5
eeoeo
eoe
eeo
2 3 1 4

Hint

说明

前三个例子与题目描述中的示例一致。

输入范围

  • 1s1051 \leq |s| \leq 10^5
  • 1t1051 \leq |t| \leq 10^5
  • 1p1051 \leq |p| \leq 10^5
  • 所有字符串均由小写英文字母组成。

由 ChatGPT 4.1 翻译