模板
矩阵运算
定义
det(A)=∑σ∈Snsgn(σ)∏i=1nai,σ(i)
拉普拉斯展开
det(A)=∑j=1n(−1)i+jaijMij,Mij 为去除 i 行 j 列的子式。
三角行列式
若 A 为上三角或下三角矩阵,则 det(A)=∏i=1naii。
简单说一下,仅恒等排列 σ(i)=i 的项非零(其余项必含下三角含有 0 的元素,因为如果一项 < 对应的 i,一定有一项 >)。
常见性质
常见性质
-
- 行列式转置后值不变。
-
- 交换两行(列),行列式变号;若两行(列)相同,行列式为 0。
-
- 一行(列)的公因子可提到外面。
-
- 若两行(列)成比例,行列式为 0。
-
- 若一行(列)是两组数之和,可拆成两个行列式相加。
-
- 将一行(列)的倍数加到另一行(列),行列式不变。
计算方法
由这个:
把行列式的某一行(列)的各元素同乘同一个数然后加到另一行(列)对应的元素上去,行列式不变。
我们可以把行列式消成倒三角矩阵。
矩阵树定理
一个图,A 为图的邻接矩阵,表示两点之间的边的数目,Di,i 为 i 的度数。
然后矩阵 L=D−A。
然后去掉第 k 行与第 k 列(k 任意),L 的值即为生成树的个数。
如果带有边权
我们发现带有重边的情况矩阵树定理可以解决,然后变的个数会乘进答案里面,所以我们直接把边权设为边的个数。
如果是有向的
从根向外的外向树,A 表示入度。
从外向根的内向树,A 表示出度。
P6178 【模板】Matrix-Tree 定理
P6178 【模板】Matrix-Tree 定理。
直接就是模板了,注意对于有向的,需要交换 n 节点和 1 节点,因为计算的时候需要减去 1 行 1 列。
例题
就记住板子,然后利用这个可以求树的边权的乘积就好了。
P3317 [SDOI2014] 重建
P3317 [SDOI2014] 重建。
这道题是使用了的边的 pi 乘上未使用的边的 1−pi,我们不希望所有的边都要乘一边权值,所以我们设定初始权值为 1−pi,然后边权为 1−pipi。
P6624 [省选联考 2020 A 卷] 作业题
P6624 [省选联考 2020 A 卷] 作业题。
T∑(e∈T∑we)⋅e∈Tgcd(we)
利用 gcd=∑d∣gcdφ(d) 得:
=T∑(e∈T∑we)d∣we,∀e∈T∑φ(d)=d∑φ(d)Td∣we,∀e∈T∑(e∈T∑we)
推完之后,我们只需要枚举 d,然后极端 d 倍数的生成树边权和。
然后怎么求 和 呢?
我们可以化和为积,在模 x2 意义下,计算 ∑(1+aix)。
加减不变。
乘法:(a+bx)⋅(c+dx)=ac+(ad+bc)x
除法:c+dxa+bx=ca+c2bc−adx
P5296 [北京省选集训2019] 生成树计数
P5296 [北京省选集训2019] 生成树计数。
这是什么东西!
(w1+w2+⋯+wm)k=k![zk]∏i=1mewiz
P4336 [SHOI2016] 黑暗前的幻想乡
P4336 [SHOI2016] 黑暗前的幻想乡。
容斥
设 f(n) 为用指定的 n 个公司,且不考虑每个公司都修建一条道路的要求,生成树的方案数。
ans=i=1∑n(−1)n−if(i)
CF917D Stranger Trees
CF917D Stranger Trees。
由于矩阵树定理求的是乘积,我们就把重要的边标记成一个数就行了,然后 k 次项就是用了 k 次。最后选 n 个这种数,然后高斯消元解方程。
P4455 [CQOI2018] 社交网络
P4455 [CQOI2018] 社交网络。
定时练习的题,但是是模板。