多校联训数学专题
【NOI2014】随机数生成器
CF923E Perpetual Subtraction
特征值,特征向量,特征多项式
一个线性变换 \(A\),如果存在一个非零向量 \(v\) 使得 \(A\) 作用于 \(v\) 后 \(v\) 只收到了拉伸,那么 \(v\) 就是一个 \(A\) 的特征向量。
显然有 \(Av=\lambda v\)。此处 \(\lambda\) 即为 特征值。
做一些推导:
因为 \(v\) 非零,所以这个等式不平凡,这意味着 \(A-\lambda I\) 的列线性相关,而线性相关的 \(A-\lambda I\) 也一定能找到对应的 ,于是上式等价于
这个式子现在只关于 \(\lambda\) 了。我们把 \(F(\lambda)=\text{det}(A-\lambda I)\) 称为特征多项式。
对角化
一个对角矩阵只在其对角线上有值,意味着它对任何向量只有拉伸效果(只有拉伸效果的矩阵也显然一定是对角矩阵),其特征向量即 \((1,0,...,0),(0,1,...,0),...,(0,0,...,1)\) ,它的幂也非常容易计算。所以对角矩阵非常具有研究价值。
介绍对角化之前,先来介绍一下基变换。即如果把基从 \((1,0,...,0),(0,1,...,0),...,(0,0,...,1)\) 变为给定的 \(E^{(1)},E^{(2)},...,E^{(n)}\),某个线性变换 \(A\) 该如何重新表示。
显然某个向量 \(v\) 会表示为:
线性变换 \(A\) 把原来的 \(E^{(i)}\) 变为 \(AE^{(i)}\),在新的语言下,它把 \(E^{-1}E^{(i)}=(0,...,1,...,0)\)(仅在第 \(i\) 位为 \(1\))映射到 \(E^{-1}AE^{(i)}\),所以,\(A\) 应当表示为:
接下来继续介绍对角化。我们知道 \(A\) 对其特征向量只有拉伸效果,所以如果选取它的一组线性无关的特征向量为基,\(A\) 一定会被表示为一个对角矩阵,而且对角线上的元素就是特征值,这就是对角化。
一个矩阵可对角化等价于它有 \(n\) 个互不线性相关的特征向量。在 \(\text{OI}\) 中一般直接手解即可。
我们设 \(f_{k,i}\) 表示 \(k\) 次过后 \(x=i\) 的概率,则有:
令 \(F_k\) 为列向量 \(\begin{bmatrix}f_{k,0}\\\vdots\\f_{k,n}\end{bmatrix}\) ,则有:
设这个大方阵为 \(D\),输入的列向量为 \(p\)。
我们要求的实际上就是 \(D^mp\)。
我们发现我们要求它的幂,考虑对角化这个矩阵。
上三角矩阵的特征值就是对角线上的所有元素,所以有:
而特征向量是可以根据定义解得:
把 \(\lambda=1,\cdots,\frac{1}{n+1}\) 代入,就可以解得 \(G\) 为:
一列就是一个特征向量。现在考虑求出 \(G^{-1}\) ,二项式反演可得:
现在问题变成给一个列向量左乘一个方阵,这个复杂度是 \(O(n^2)\) 的,不能接受,但我们的方阵比较特殊。
先考虑 \(Gp\) 的计算,设 \(q=Gp\),则有
容易发现这是一个减法卷积可以 \(\text{NTT}\) 优化,左乘 \(G^{-1}\) 的计算和这个区别不大,就不细说了,左乘 \((G^{-1}DG)^m\) 的计算就是给每一项乘上对角线上对应的那一个数即可。
点击查看代码
Gym 102978A Ascending Matrix
Gym 103415J Cafeteria
Gym 103415K Magus Night
[TJOI2019]唱、跳、rap和篮球
CF908D New Year and Arbitrary Arrangement
CF750G New Year and Binary Tree Paths
设 \(f_{i,j}\) 表示有 \(i\) 个 \(A\),\(j\) 个 \(AB\) 期望长度。目标状态是 \(f_{1,0}\) ,因为 \(f_{0,0}\) 会转移自己。容易得到方程:
初始转态是 \(f_{i,j}(i+j\geqslant k)\),因为再加一个 \(B\) 就完成了。
求:
代入公式:
点击查看代码