真心觉得是道不错的题,非常简单的dp方程,然后O(n^3)的矩阵乘法都是非常裸的,结果发现最后n<=1000的点是过不去的,想了一会决定看一下hzwer的题解,然后就学了一下循环矩阵,真心是个不错的东西,第一次见是在SDOI2015的时候,确实是个神奇的东西。
本题的矩阵是一个循环矩阵,每一行都是由前一行右移一位得到的,于是就有一个非常好的性质,我们只需要保存第一行的情况,然后算出答案后,依次右移即可,具体计算方式如下。
f[i]=f[i-1]/M+f[i]*(1-1/M)
(f[1] f[2] ^ f[n])*(1-1/M 1/M ^ 0 )=(f[1] f[2] …… f[n])
(0 1-1/M …… 0 )
(………………………)
(0