LGP2233题解
题目大意
求环上走 \(n\) 步从指定点到达另一指定点,到达指定点后 不得继续移动。
大家都做过P1057传球游戏吧?还记得这道题的思路吗?
设 \(dp[i][j]\) 表示传 \(i\) 次求传到 \(j\) 的手上的方案数,那么
\[dp[i][j]=dp[i-1][(j-1)]%n+1+dp[i-1][(j+1)%n+1]
\]
此题类似,\(n\) 即可。
不过这样得不了全分。我们从维度来入手,优化转移。
可以看出,第二维度几乎不可优化,只能从第一维度入手。
恩,这次只和上一次有关。。。矩阵快速幂!
到这里了,该怎么构造矩阵呢?
首先观察矩阵乘法的计算方法:
\[a_{i,j}=\sum_{k=1}^nb_{i,k} \times c_{k,j}
\]
也就是行乘列qwq
对于非第一行的元素,那一行全是 \(0\),乘上一个列还是 \(0\),重点观察第一行。(这里把第一个矩阵和第二个矩阵转化成一个 \(1 \times n\) 的矩阵以方便观察)
\[a_i=\sum_{k=1}^n b_{i,k} c_k
\]
唉这是不是有点儿像无向图,有边就走,没边就不走?
是的!
所以能够构造出如下转移矩阵:
\[\begin{gathered}
\begin{matrix}
0&1&0&0&0&0&0&0\\
1&0&1&0&0&0&0&0\\
0&1&0&1&0&0&0&0\\
0&0&0&0&0&0&0&0\\
0&0&0&1&0&1&0&0\\
0&0&0&0&1&0&1&0\\
0&0&0&0&0&1&0&1\\
0&0&0&0&0&0&1&0\\
\end{matrix}
\quad
\end{gathered}
\]
因为 \(4\) 不能转移,所以$ 4 $那一行全是 \(0\)QAQ
代码就不用贴了吧QAQ,蓝题都会做的dalao怎么不会把我们乘起来呢QAQAQ