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

posted @ 2022-01-10 15:20  Prean  阅读(22)  评论(0编辑  收藏  举报
var canShowAdsense=function(){return !!0};