必备知识: 高斯消元,图论基本知识(好像就这...(雾)) 这里是无向图部分,请不要走错场... 定义 我们将邻接矩阵定义为矩阵\(A(u,v)\),我想邻接矩阵就不用再多说了: 我们将每个点的度数矩阵定义为矩阵\(D(u,v)\),这里再加上数学表示: \(D(u,u)=u\)这个点的度数,\(D(u,v)=0(u!=v)\): 我们将矩阵Laplace(或Kirchhoff)定义为\(L(u,v)=D(u,v)-A(u,v)\) 我们将生成树的个数定义为 \(t\): 引入 这里将讲述行列式…
必备知识: 高斯消元,图论基本知识(好像就这...(雾)) 这里是无向图部分,请不要走错场... 定义 我们将邻接矩阵定义为矩阵A(u,v),我想邻接矩阵就不用再多说了: 我们将每个点的度数矩阵定义为矩阵D(u,v),这里再加上数学表示: D(u,u)=u这个点的度数,D(u,v)=0(u!=v): 我们将矩阵Laplace(或Kirchhoff)定义为L(u,v)=D(u,v)-A(u,v) 我们将生成树的个数定义为 t : 引入 这里将讲述行列式,如果dalao已经学过,请直接跳过这个环节:…
最近集中学习了一下矩阵树定理,自己其实还是没有太明白原理(证明)类的东西,但想在这里总结一下应用中的一些细节,矩阵树定理的一些引申等等. 首先,矩阵树定理用于求解一个图上的生成树个数.实现方式是:\(A\)为邻接矩阵,\(D\)为度数矩阵,则基尔霍夫(Kirchhoff)矩阵即为:\(K = D - A\).具体实现中,记 \(a\) 为Kirchhoff矩阵,则若存在 \(E(u, v)\) ,则\(a[u][u] ++, a[v][v] ++, a[u][v] --, a[v][u] --\…
  大概--会很简洁吧 qwq. 矩阵树定理   对于无自环无向图 \(G=(V,E)\),令其度数矩阵 \(D\),邻接矩阵 \(A\),令该图的 \(\text{Kirchhoff}\) 矩阵 \(K=D-A\).取其任意一个 \(n-1\) 阶主子式 \(K'\),则 \(G\) 的生成树个数 \(s=\det K'\).   证明先咕掉 qwq. 一些推广   对于有向图以 \(r\) 为根的内向生成树,取 \(D\) 为初度矩阵,取主子式时删去 \(r\) 行 \(r\) 列,再求行列…
行列式: 参考 oi-wiki 定义 对于一个\(n*n\)的矩阵A行列式取值(标量) \(det(A)=|A|=\sum\limits_p(-1)^{\tau(p)}\prod\limits_{i=1}^na_{i,p_i}\) \(\tau(p)\)即排列\(p\)的逆序对个数. 性质 证明后面再补 1.\(|A|=|A^T|\),即排列是按排列p下表为行的行列式等同于排列p下标为列的得到的行列式. 2.交换两行(列),行列式取相反数 3.把一个矩阵的一行(列)的值全部乘一个常数加到另一行(…
In some countries building highways takes a lot of time... Maybe that's because there are many possiblities to construct a network of highways and engineers can't make up their minds which one to choose. Suppose we have a list of cities that can be c…
传送门 题意: 给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图$K_{n,m}$ 求生成树个数 1 <= n,m,p <= 10^18 显然不能暴力上矩阵树定理 看过推到完全图的生成树个数后这道题也不难做 构建出基尔霍夫矩阵,找一个主子式,所有行加起来放一行上,用这一行消消消就发现最后对角线上有$n-1$个$m$和$m-1$个$n$和$1$个$1$ 然后要用快速乘...蒟蒻第一次用快速乘... #include <iostream> using namesp…
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Status][Discuss] Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪平等,幻想乡多元化等等,对于幻想乡 目前面临的种种大问题却给不出合适的解…
[LOJ#6072]苹果树(矩阵树定理,折半搜索,容斥) 题面 LOJ 题解 emmmm,这题似乎猫讲过一次... 显然先\(meet-in-the-middle\)搜索一下对于每个有用的苹果数量,满足权值小于\(lim\)的方案数 ,那么只需要考虑它们构成生成树的方案数就好了. 显然有用的可以和所有的有用的或者是坏的连边,好的但不有用的只能和坏的连边,而坏的随意. 但是这样子算出来的结果是至多,因此还需要额外容斥一下计算生成树的个数. #include<iostream> #include&…
传送门 矩阵树定理模板题. 题意简述:自己看题面吧太简单懒得写了 直接构建出这4n4n4n个点然后按照题面连边之后跑矩阵树即可. 代码: #include<bits/stdc++.h> #define ri register int #define idx(x) ((x)%n) using namespace std; const int N=505,mod=2007; int n,a[N][N]; inline void add(int u,int v){++a[u][u],++a[v][v…