比较人性的一个题目。
考虑对于朴素的 DP,我们设 fi 表示以第 i 个裂缝截止可以获得的答案,那么如果这个裂缝没有标记,转移方程就是:
fi=j=0∑i−1fj×(i−j)2
否则就有 fi=0。
显然对于一个 n 有 109 的状态我们应该用矩阵乘法优化,那么直接的思路就是把特殊点分割的每一段都用矩阵乘法优化,所以现在只考虑 i+1 不是特殊点的转移方法。
考虑对转移进行简单变形,得到:
fi+1=j=0∑ifj×(i+1−j)2
把 fi 拿出来得到:
fi+1=fi+j=0∑i−1fj×(i−j+1)
打开后面的括号得到:
fi+1=fi+j=0∑i−1fj×(i−j)2+2j=0∑i−1fj×(i−j)+j=0∑i−1fj
那么设:
ai=j=0∑i−1fj, bi=j=0∑i−1fj×(i−j), ci=j=0∑i−1fj×(i−j)2
那么容易发现其实 fi=ci,所以分情况讨论得到:
如果 i+1 不是特殊的:
- ai+1=ai+ci
- bi+1=ai+bi+ci
- ci+1=ai+2bi+2ci
如果 i+1 是特殊的:
- ai+1=ai
- bi+1=ai+bi
- ci+1=ai+2bi+ci
那么通过这个转移构建的矩阵如下,分别是不特殊和特殊:
⎣⎡ai+1bi+1ci+1⎦⎤=⎣⎡aibici⎦⎤×⎣⎡111012112⎦⎤
⎣⎡ai+1bi+1ci+1⎦⎤=⎣⎡aibici⎦⎤×⎣⎡111012001⎦⎤
时间复杂度为 O(mlogn)。