Gravatar
┭┮﹏┭┮
积分:2922
提交:742 / 1645

Pro2420  五彩的色子

挺好的递推+矩阵快速幂题

题面:有一个m面的骰子,问投n次使投到第6面为偶数次的方案数

首先考虑递推,设f(i,j,k)为投i次的情况,j为0或1 (0为本次未投到第6面,1为投到了),k为0或1 (当前投到第6面次数的奇和偶,0为偶,1为奇)

转移方程为$f(n,1,0) = f(n-1,1,1) + f(n-1,0,1)$

$f(n,1,1) = f(n-1,1,0) + f(n-1,0,0)$

$f(n,0,0) = m-1 * f(n-1,1,0) + m-1 * f(n-1,0,0)$

$f(n,0,1) = m-1 * f(n-1,1,1) + m-1 * f(n-1,0,1)$

看到n的范围$10^{18}$ wow,一眼dz,肯定要快速幂,根据递推可以想到矩阵快速幂,下面开始推转移矩阵

可以想到

$$\begin{bmatrix}f(n-1,1,0) & f(n-1,1,0) & f(n-1,0,0) & f(n-1,0,1) \\\end{bmatrix}$$

应该转移为

$$\begin{bmatrix}f(n,1,0) & f(n,1,0) & f(n,0,0) & f(n,0,1)\end{bmatrix}$$

所以根据递推转移方程考虑转移矩阵,则可建出矩阵为:

$$\begin{bmatrix}0 & 1 & m-1 & 0\\1 & 0 & 0 & m-1\\0 & 1 & m-1 & 0\\1 & 0 & 0 & m-1\\\end{bmatrix}$$

初始矩阵为$f(1)$ 即 $\begin{bmatrix}0 , 1 , m-1 , 0\end{bmatrix}$

OO最后直接跑矩阵快速幂就行了OO

复杂度为$O(4^3*log(n))$

好像这道题还有数学方法,但不会





2023-11-17 11:31:07    
我有话要说
Gravatar
ムラサメ
积分:1492
提交:375 / 742
题解写得很清楚,但 $HZX$ 强迫别人点赞的行为值得给个差评

2023-11-17 16:50:29    
Gravatar
Murasame
积分:77
提交:11 / 21

回复@ムラサメ :

同意楼上观点

2023-11-17 18:05:31    
Gravatar
┭┮﹏┭┮
积分:2922
提交:742 / 1645

回复@ムラサメ :

你说的对,但是但是《〇神》是由米哈游自主研发的一款全新开放世界冒险游戏

2023-11-17 18:32:01