题目描述
你有
l
和
- 将
r
变成原来的
l+ 原来的 r ,这里的+ 表示将两个字符串连接起来 - 将
l
变成原来的
l
给定一个长度为
m
的匹配串
n≤109,m≤104,0<p≤109
分析
类似于斐波那契数的斐波那契串,名字是我随便取的。
考虑某轮操作完得到的新串
S
,有
那么
S
所包含的匹配串数(记为
其中
C
表示跨过
那么问题就变成如何求
C
。
实际上考虑匹配串长度只有
但是这里
n
很大。
考虑假如不存在
这里存在
C
了,但是当
于是我们先暴力算
l
和
那么这里只需要找到循环节,算出循环那么多次的转移矩阵,利用矩阵乘法求出
Vln
就可以了。
时间复杂度
O(km+33logn)
,其中
k
是满足
空间复杂度
O(m)