cf222 E. Decoding Genome(矩阵快速幂优化dp)
题意:
求用m种字符组成长度为n的字符串的方案数。有k个限制,每个限制 "ab" 表示字符b不能紧接在a的后面。
\(1\le n \le 1e15, 1\le m \le 52\)
思路:
\(f(i,j)\) 表示放了 \(i\) 个字符,第 \(i\) 个字符是 \(j\) 的方案数,则 \(f(i,j) = \sum\limits _{k=1}^m f(i-1,k)*[j能紧接在k后]\)
n太大了,想办法log一下。建立 m×m 矩阵 \(A\),矩阵元素 \(a_{ij}=1/0\) 表示字符 \(j\) 能/否紧接在 \(i\) 之后。
单行矩阵 \(F_1=(1 ,1,1,1,\cdots )\),最后的 \(F_n=F_1\times A^{n-1}\)。输出 \(F_n\) 的元素总和。