线性代数

行列式

基本概念

记作 \(det(A)\) 或者 \(\lvert A\rvert\)
求值:\(\sum\limits_p (-1)^{f(p)}\prod A_{i,p_i}\)
其中 \(f(p)\)\(p\) 的逆序对数,\(p\) 取遍 \(1-n\) 的排列。

性质

  1. 上三角(右上)矩阵的值为主对角线乘积。
  2. \(\lvert I\rvert=1\)
  3. 交换矩阵两行,行列式变号
  4. 矩阵乘上一常数,行列式也相应乘上一常数
  5. 当矩阵有两行相等或者呈倍数关系,行列式为 \(0\)
  6. 若两矩阵至多一行不相等,则将这一行相加所得矩阵的行列式为原来两个之和。
  7. 矩阵某一行加上另一行倍数,行列式不变。

高斯消元

P3389 【模板】高斯消元法

矩阵求逆

利用 \(A^{-1} \times [A I]=[I A^{-1}]\) 来求解。
方法就是在 \(A\) 矩阵的右边再塞入一个单位矩阵,然后对于左边的 \(A\) 矩阵进行高斯-约旦消元。

行列式求值

利用初等变换将矩阵变成上三角矩阵,然后值就是对角线乘积。
注意细节如果交换两行,需乘以 \(-1\)

例题

P2455 [SDOI2006] 线性方程组

加入了对于无解和无数解的判断,有点小麻烦。
无数解就是系数为 \(0\),等号另一侧也为 \(0\)。无解就是系数为 \(0\),等号另一侧不为 \(0\)
可以采用 cnt 记录已处理方程数,对于每个主元 \(x_i\) 对编号在 $ > cnt$ 之后的所有方程进行操作,而非对于 \(\ge i\) 的。这样最后剩下的 \([cnt+1,n]\) 即为各项系数全部为 \(0\) 的方程,判断一下即可。

P4035 [JSOI2008] 球形空间产生器

解多元二次方程题,可得对于 \(\forall i \in [1,n+1]\)\(\sum\limits_{j=1}^n(x_j-c_{i,j})^2=R^2\)
展开可得 \(\sum\limits_{j=1}^n x_j^2-2x_jc_{i,j}+c_{i,j}^2=R^2\)
观察一下形式,有平方项显然不太好处理,注意 \(c_{i,j}\) 为已知,所以这个无需处理。我们发现 \(R\) 与题无关显然不用求,于是考虑相邻两个式子作差,\(x_j^2\) 平方项以及 \(R^2\) 就消掉了。直接高斯消元即可。

P2447 [SDOI2010] 外星千足虫

加法同余式转化为异或方程组,可得:
\(\bigoplus\limits_{j=1}^n a_{i,j}\times x_j=b_i\)
注意这里是贪心最少的方程个数,所以方法就是尽可能在前面几个方程里面找就行了。
可以用 bitset 快速消元。

矩阵树定理

无向图
\(D_{i,j}=\begin{cases} deg_i&i=j \\0&i\neq j \end{cases}\)
\(A_{i,j}=e_{i,j}\) (其中 \(e_{i,j}\) 代表 \(i \to j\) 重边数量)。
于是得到 \(L=D-A\),将 \(L\) 去掉第 \(i\) 行和第 \(i\) 列,得到的矩阵求行列式即可。

有向图
对于有向图就是把度数矩阵改为入度或者出度,根据要求的内向树还是外向树来决定使用入度还是出度。同时去掉的那一行和一列限制为 \(root\)。注意外向树答案为入度统计。

可以广义扩展一下,其实就是所有树边多项式乘积之和。

P6178 【模板】Matrix-Tree 定理

将边权改为重边即可。

P6624 [省选联考 2020 A 卷] 作业题

等学完了莫比乌斯反演在来写这题。

P4336 [SHOI2016] 黑暗前的幻想乡

P3317 [SDOI2014] 重建

posted @ 2024-06-08 17:04  Mirasycle  阅读(7)  评论(0编辑  收藏  举报