ARC077F

https://www.luogu.com.cn/problem/AT_arc077_d

我们设 TiT_i 表示 fi(S)f^i(S) 的前一半,例如输入的 S=S′S′S=S'S',则 T0=S′T_0=S'。

设 B(T)B(T) 表示 TT 最长的不为自身的 border,则容易证明 Ti=Ti−1Ti−1−B(Ti−1)T_i = T_{i-1}T_{i-1}-B(T_{i-1}),这里减法表示去除一个后缀。

我们证明如下结论:

  • 如果 S′S' 存在整周期,设其中最小的为 Xk=S′X^k=S',因为如果存在整周期,则最小周期一定为最小整周期,于是 Ti=Xk+iT_i=X^{k+i}。
  • 如果 S′S' 不存在整周期,设 Ti−1=S′−B(S′)T_{i-1}=S'-B(S'),则有 ∀≥1, Ti=Ti−1Ti−2, Ti−2=B(Ti)\forall \ge 1,\ T_i = T_{i-1}T_{i-2},\ T_{i-2}=B(T_{i})。

我们归纳证明第二种情况:

对于 i=1i=1 由定义可知第一部分成立。

当 i=ki=k 时第一部分成立时:

Ti−2T_{i-2} 一定是 Ti=Ti−2Ti−3Ti−2T_i=T_{i-2}T_{i-3}T_{i-2} 的一个 border,我们只需要证明它是最长的,否则设最长 border 为 CC,如果 ∣C∣>∣Ti−2Ti−3∣|C|>|T_{i-2}T_{i-3}|,则 TiT_{i} 有长度小于 Ti−2T_{i-2} 的周期,则它的前缀 Ti−1=Ti−2Ti−3T_{i-1}=T_{i-2}T_{i-3} 有长度超过 Ti−3T_{i-3} 的 border,与假设矛盾。

如果 ∣Ti−2∣<∣C∣≤∣Ti−2Ti−3∣|T_{i-2}| \lt |C| \le |T_{i-2}T_{i-3}|,设 C=Ti−2AC=T_{i-2}A,则 AA 是 Ti−3T_{i-3} 的前缀,所以它也是 Ti−2T_{i-2} 的前缀,也就是 CC 的 border,而 Ti−2T_{i-2} 也是 CC 的 border,因为 ∣C∣−∣A∣+∣C∣−∣Ti−2∣=∣C∣|C|-|A|+|C|-|T_{i-2}| = |C|,所以由弱周期引理得 CC 的长度为 gcd⁡(∣C∣−∣Ti−2∣,∣C∣−∣A∣)=gcd⁡(∣A∣,∣Ti−2∣)\gcd(|C|-|T_{i-2}|,|C|-|A|)=\gcd(|A|, |T_{i-2}|) 的前缀 DD 也为 CC 的周期,于是这也为 CC 的前缀 Ti−2T_{i-2} 的整周期,设 Ti−2=DjT_{i-2}=D^j,则 Ti−1=Dj+1, Ti=D2j+1=Dj+2T_{i-1}=D^{j+1},\ T_{i}=D^{2j+1}=D^{j+2},所以 j=1j=1,这样 gcd⁡(∣A∣,∣Ti−2∣)=∣Ti−2∣\gcd(|A|, |T_{i-2}|)=|T_{i-2}|,与假设矛盾,于是 i=ki={k} 时第二部分成立。

当 i=ki=k 时第二部分成立时:

Ti+1=TiTi−B(Ti)=TiTi−Ti−2=TiTi−1T_{i+1}=T_{i}T_{i}-B(T_i)=T_iT_i-T_{i-2}=T_iT_{i-1},即 i=k+1i={k+1} 时第一部分成立。

在 i=1i=1 时可能会因为涉及到 T−2T_{-2} 产生一些问题,不过可以利用 S′S' 没有整周期的性质单独说明。

于是证明完毕。

所以如果 S′S' 存在整周期可直接计算,否则答案可以拆成 O(log⁡n)O(\log n) 个 FiF_{i},其中 ii 是 O(log⁡n)O(\log n) 级别的和,直接暴力计算 FiF_{i} 里边每个字符的数量即可。