字符串
题目链接:luogu P6629
题目大意
给你一个字符串,然后多次询问每次问你一个子串,问你这个串有多少个本质不同的平方子串。
思路
md 到底是什么阴间东西。
本原平方串
其实这个东西就是本原平方串。
首先一些简单的性质: a a a 是 b b b 前缀, a a a 有 p p p 的循环节, b b b 有 q q q 的, p ∣ q p|q p∣q, q < ∣ a ∣ q<|a| q<∣a∣,那 b b b 也有 p p p 的循环节。
然后如果 s s s 是 t t t 的前缀(都非空),而且 2 ∣ s ∣ > t 2|s|>t 2∣s∣>t,那 ∣ t ∣ − ∣ s ∣ |t|-|s| ∣t∣−∣s∣ 是 s s s 的周期。
这个画个图不难理解,就是看多出来那一部分。
然后证一些东西:
- 如果 u , v , w u,v,w u,v,w 非空且 u u uu uu 是 v v vv vv 前缀, v v vv vv 是 w w ww ww 前缀, u u uu uu 是本原平方串,那 ∣ u ∣ + ∣ v ∣ < ∣ w ∣ |u|+|v|<|w| ∣u∣+∣v∣<∣w∣
首先如果 ∣ w ∣ ⩾ 2 ∣ v ∣ |w|\geqslant2|v| ∣w∣⩾2∣v∣ 显然成立,所以只看 ∣ w ∣ < 2 ∣ v ∣ |w|< 2|v| ∣w∣<2∣v∣
然后可以得到 ∣ w ∣ − ∣ v ∣ |w|-|v| ∣w∣−∣v∣ 是 v v v 周期。
然后设 ∣ u ∣ + ∣ v ∣ > ∣ w ∣ |u|+|v|>|w| ∣u∣+∣v∣>∣w∣(反证),即 ∣ w ∣ − ∣ v ∣ < ∣ u ∣ |w|-|v|<|u| ∣w∣−∣v∣<∣u∣,所以 ∣ w ∣ − ∣ v ∣ |w|-|v| ∣w∣−∣v∣ 也是 u u u 周期。
然后分类 2 ∣ u ∣ ⩽ ∣ v ∣ 2|u|\leqslant |v| 2∣u∣⩽∣v∣,那 u u uu uu 是 v v v 前缀,就有 ∣ w ∣ − ∣ v ∣ |w|-|v| ∣w∣−∣v∣ 也是 u u uu uu 周期。
但是 ∣ w ∣ − ∣ v ∣ < ∣ u ∣ |w|-|v|<|u| ∣w∣−∣v∣<∣u∣,就更小了,所以不行。
如果 2 ∣ u ∣ > ∣ v ∣ 2|u|>|v| 2∣u∣>∣v∣,我们就有