行列式相关

Part 0:前置知识

高斯消元

Part 1:行列式

1、定义

对于一个矩阵 A,它的行列式为

det(A)=p(1)τ(p)i=1nAi,pi

其中 p 是一个 1n 的排列,τ(p) 表示 p 的逆序对数。

det(A) 又写作 |A|

2、基本性质

  • 1.2.1. 对于一个上三角矩阵,它的行列式等于主对角线所有值的乘积。

  • 1.2.2. 单位矩阵的行列式为 1。即 |I|=1

  • 1.2.3. 交换矩阵两行,行列式变号。

    可以看作交换排列中的两个数,这会让逆序对数量改变奇偶性,因此行列式的值变号。

  • 1.2.4. 将矩阵某一行乘上常数,行列式乘上相同常数。

  • 1.2.5. 若矩阵有相同的两行,则行列式为 0

    因为交换相同的两行会让行列式变号,但矩阵保持不变。于是有 |A|=|A|,得 |A|=0

  • 1.2.6. 若矩阵两行存在倍数关系,则行列式为 0

  • 1.2.7. 若两个矩阵至多有一行不等,则将这不等的一行相加得到的新矩阵的行列式等于原矩阵行列式之和。

  • 1.2.8. 将矩阵的某一行加上另一行的倍数,行列式不变。

    AdAd+kAc,令 A 操作后的矩阵为 C,令 Bi=Ai(id),Bd=kAc,根据 1.2.6. 知 |B|=0。又由 1.2.7. 得 |A|+|B|=|C|,因此 |A|=|C|

Part 2:习题

P4455 [CQOI2018] 社交网络

外向生成树计数板子题。

P3317 [SDOI2014] 重建

其实比较显然,但不会写代码……

一棵生成树 T 的权值是 eT(1Pe)eTPe,容易想到变形成 e(1Pe)eTPe1Pe,因此将每条边的权值记作 Pe1Pe

注意浮点数的矩阵树定理不用记符号。当 Pe=1 时将 PePeeps 即可避免除以 0​。

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

看到 gcd,直接欧拉反演带走,式子化为

val(T)=(d=1Vφ(d))×T,de1n1(i=1n1wei)

枚举 d,直接做的复杂度是 O(n3V),过不去。

可以优化,只对存在 n1 个倍数的 d 做矩阵树定理,时间复杂度变为 O(n3×σ0(wi)n1)=O(n2σ0(wi))​。

CF917D Stranger Trees

其实这题和“边权和的和”是很像的,矩阵树定理能求出边权和的积,那考虑怎么让一堆边权相乘最后能得出有 k 条边重复的生成树个数。容易想到设没有的边的边权为 x0,给定的边边权为 x,那么答案就是 xk 前面的系数。

但问题是直接对多项式矩阵做矩阵树定理复杂度高达 O(n4logn)。考虑最后得到的多项式 a0+a1x1+anxn,我们可以代入 n 个特殊值最后再用高斯消元插值回来,这样复杂度就到了 O(n4)

posted @   xishanmeigao  阅读(87)  评论(0编辑  收藏  举报
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示