各种数学学习笔记

2021.3.15

行列式的计算

行列式的一些性质

  • 将行列式任意两行交换,\(\det(A^\prime)=-\det(A)\)
  • 将行列式任意一行全乘上 \(k\)\(\det(A^\prime)=k\det(A)\)
  • 将行列式任意一行减去另一行的 \(k\) 倍,\(\det(A^\prime)=\det(A)\)
  • 三角矩阵的行列式为对角线上所有数的乘积

结合这些性质,可以高斯消元消成一个上三角矩阵,期间记录符号
最后计算即可

Matrix-Tree 定理

背结论就好。。。

无向图生成树计数:令 \(A\) 为邻接矩阵,\(D\) 为度数矩阵(\(D_{i,i}=deg_i\),其他地方为 0),\(K=D-A\)\(K^\prime\)\(K\) 删掉任意一行一列的值,答案为 \(\det(K^\prime)\)
无向图带边权生成树乘积求和:把 \(A\) 换成边权邻接矩阵,把 \(D\) 变成所有连边的权值和即可
有向图内向生成树计数:令 \(A\) 为邻接矩阵,\(D\)出度矩阵(\(D_{i,i}=oudeg_i\),其他地方为 0),\(K=D-A\)\(K^\prime\)\(K\) 删掉根所在的那一行那一列的值,答案为 \(\det(K^\prime)\)
有向图外向生成树计数:令 \(A\) 为邻接矩阵,\(D\)入度矩阵(\(D_{i,i}=indeg_i\),其他地方为 0),\(K=D-A\)\(K^\prime\)\(K\) 删掉根所在的那一行那一列的值,答案为 \(\det(K^\prime)\)
有向图带边权生成树乘积求和:同样把矩阵带上边权即可

考虑如果是生成树边权和求和,我们只需要把矩阵的每个点维护成一个多项式,最后查询1次项系数即为答案。
所以在 \(\bmod x^2\) 的意义下搞这个,同样可以保证复杂度,每次计算都是 \(\mathcal O(1)\)
这种的例题是 P6624 [省选联考 2020 A 卷] 作业题

首先前面要转化一下式子,根据欧拉函数反演 \(n=\sum_{d|n}\phi(d)\)
原来的式子可以转化成

\[\sum_{T}\sum_{i=1}^k w_{e_i}\sum_{d|w_{e_j},1\leq j\leq k}\phi(d) \]

考虑枚举 \(d\),即

\[\sum_{d=1}^{\max w_i}\varphi(d)\sum_{T,d|w_{e_j},1\leq j\leq edge(T)}\sum_{i=1}^k w_{e_i} \]

然后按上面的方法做即可

code

莫比乌斯反演

对于 \(f(n),F(n)\),如果

\[F(n)=\sum_{d|n}f(d) \]

那么有

\[f(n)=\sum_{d|n}\mu(d) F(\dfrac{n}{d}) \]

证明的话把 \(\mu(d)\) 提到前面来,然后交换求和顺序,根据 \(\mu\) 的性质 \(\sum_{d|n}\mu(d)=[n=1]\) 即可证明

用到的一些结论:

\[d(ij)=\sum_{x|i}\sum_{y|j}[\gcd(x,y)=1] \]

\[\lfloor\dfrac{x}{yz}\rfloor=\lfloor\dfrac{\lfloor\frac{x}{y}\rfloor}{z}\rfloor \]

\[\sum_i\sum_j[\gcd(i,j)=1]=\sum_i\sum_j \sum_{d|\gcd(i,j)}\mu(d) \]

posted @ 2021-03-15 10:44  YuukiYumesaki  阅读(33)  评论(0编辑  收藏  举报