行列式学习笔记
行列式
基础
概念
\(n\) 阶行列式
\[\begin{vmatrix} a_{11} & a_{12} & ... & a_{1n} \\ a_{21} & a_{22} & ... & a_{2n} \\ ... & ... & & ... \\ a_{n1} & a_{n2} & ... & a_{nn} \\ \end{vmatrix}
\]
完全展开式 $ \sum_{j_1j_2...j_n}(-1)^{\tau(j_1j_2...j_n)}a_{1j_1}a_{2j_2}...a_{nj_n} $
\(\tau\) 指逆序对数
性质
- 经过转置后,行列式的值不变,即 \(|A^T|=|A|\)
- 两行或两列互换位置,行列式 \(\times -1\)
- 把某行(列)的 \(k\) 倍加到另一行(列),行列式的值不变
- 某行(列)有公因子 \(k\) 可提到行列式外
- 行列式的某行(列)是两个元素之和,可把行列式拆成两个行列式之和
通过性质23,我们可以完成高斯消元,把矩阵变成上三角矩阵,容易发现,上三角矩阵的行列式就是对角线上的数的乘积(通用计算方法)
性质45的证明:
\(Laplace\)展开
- 余子式(minor):\(M_{ij}\) ,表示去掉第 \(i\) 行和第 \(j\) 列的 \(n-1\) 阶行列式
- 代数余子式(cofactor): \(A_{ij}=(-1)^{i+j}M_{ij}\)
\(|A|=\sum_{k=1}^na_{ik}A_{ik},i=1,2,...,n\)
特殊的:
\[\begin{vmatrix} A & * \\ O & B \\ \end{vmatrix} =
\begin{vmatrix} A & O \\ * & B \\ \end{vmatrix} = |A|\cdot|B|,~
\begin{vmatrix} O & A \\ B & * \\ \end{vmatrix} =\begin{vmatrix} * & A \\ B & O \\ \end{vmatrix} =(-1)^{mn}|A|\cdot|B|
\]
范德蒙德行列式
\[\begin{vmatrix} 1 & 1 & ... & 1 \\ x_1 & x_2 & ... & x_n \\ x_1^2 & x_2^2 & ... & x_n^2 \\ ... & ... & ... & ...\\ x_1^{n-1} & x_2^{n-1} & ... & x_n^{n-1} \\ \end{vmatrix} = \prod_{1 \leq j<i \leq n}(x_i - x_j)
\]
例题
【2021集训队互测一】愚蠢的在线法官
题目大意
给定树的形态,数组 \(A,v\),求
\[\left |
\begin{array}{cccc}
v_{\text{LCA}(A_1,A_1)} & v_{\text{LCA}(A_1,A_2)} & \cdots & v_{\text{LCA}(A_1,A_n)}\\
v_{\text{LCA}(A_2,A_1)} & v_{\text{LCA}(A_2,A_2)} & \cdots & v_{\text{LCA}(A_2,A_n)}\\
\vdots & \vdots & \ddots & \vdots\\
v_{\text{LCA}(A_n,A_1)} & v_{\text{LCA}(A_n,A_2)} & \cdots & v_{\text{LCA}(A_n,A_n)}\\
\end{array}
\right |
\]
solution
首先 \(A\) 中若有重复,其行列式一定为0
然后交换两个 \(A\) ,相当于交换一行和一列,行列式不变
所以考虑在树上进行行列式的合并
我们需要处理的是
\[\left |
\begin{array}{}
A&V\\
V&B
\end{array}
\right |
\]
A,B是两个需要合并的行列式, \(V\) 表示全是 \(v_k\) 的矩阵(需要合并的两棵子树的LCA是固定的)
如何求呢?
令 \(|A|_s\) 表示把 \(A\) 任意一行改成1的行列式的和,\(A_t\) 表示把 \(A\) 矩阵中的每个元素 \(-t\)
考虑用上面的性质45证明一个东西:
\[|A|=|A_t|+t|A|_s
\]