题目链接: "戳我" 有向生成树计数。 那么在这里补充一下矩阵树定理吧! 度数矩阵 邻接矩阵(双向计数),去掉任意一行一列,剩下的式子高斯消元之后,对角线乘积是无向图的生成树个数。 入度矩阵 邻接矩阵(单向边),去掉根相关的一行一列,剩下的式子高斯消元之后,对角线乘积是外向树的生成树个数。 出度矩阵 ...
分类:
其他好文 时间:
2019-05-23 00:11:10
阅读次数:
101
"传送门" 这个题好像 "bzoj4455:[Zjoi2016]小星星" 然后就可以类比那个思路将树形dp改为矩阵树定理,然后就做完了 代码: c++ include include include include using namespace std; void read(int &x) { c ...
分类:
其他好文 时间:
2019-05-03 16:34:42
阅读次数:
125
原文链接www.cnblogs.com/zhouzhendong/p/UOJ75.html 前言 根本没想到。 题解 首先我们可以考虑一种做法: 找一些图,使得他们各自的生成树个数乘起来等于 k。 那么只要将他们用一条链连起来就得到答案了。 接下来考虑如何得到这些图。 考虑随机生成一个 n 个点的图 ...
分类:
编程语言 时间:
2019-03-17 13:33:58
阅读次数:
206
传送门:https://www.luogu.org/problemnew/show/P3317 这道题的推导公式还是比较好理解的,但是由于这个矩阵是小数的,要注意高斯消元方法的使用; #include <algorithm> #include <iterator> #include <iostrea ...
分类:
其他好文 时间:
2019-03-09 23:13:39
阅读次数:
199
我们求 x1 + x2 + ... + xn = a 的非负整数解数量时,将它转换成了组合数的求解问题,使原本暴力枚举的指数级复杂度降为求阶乘的线性复杂度。我们求图中生成树个数的时候,也可以根据 matrix-tree 定理转换成线性代数中求行列式的问题。两个问题的思路是一致,将原问题转换为另一领域... ...
分类:
编程语言 时间:
2019-01-17 14:00:07
阅读次数:
206
其实是矩阵树定理模板题。 但是要注意不合法的情况预处理的时候设置成0,要不然计算行列式的时候有问题。直接跳过不合法情况,不给它建立新点就行了。 代码如下: cpp include include include include define mod 1000000000 using namespac ...
分类:
其他好文 时间:
2019-01-13 00:13:41
阅读次数:
139
引用:https://blog.csdn.net/Marco_L_T/article/details/72888138 1、无向图 一个图的邻接矩阵G:对于无向图的边(u,v),G[u][v]++,G[v][u]++ 一个图的度数矩阵D:对于无向图的边(u,v),D[u][u]++,D[v][v]+ ...
分类:
其他好文 时间:
2018-09-20 11:26:04
阅读次数:
173
P4208 [JSOI2008]最小生成树计数 矩阵树定理+最小生成树 神犇的题解 ↑↑需要的2个定理 根据定理,我们需要求出的是每层相同权值的生成树方案之积 所以在最小生成树求解过程中嵌入计算过程:每次建一个新图,计算新图行列式的值。 因为模数不是质数所以高斯消元就用辗转相除了 ...
分类:
Web程序 时间:
2018-09-18 22:40:13
阅读次数:
185
P4111 [HEOI2015]小Z的房间 矩阵树定理 高斯消元 矩阵树定理:一个图的(度数矩阵-邻接矩阵)的行列式的值是图中所有生成树的方案数 求行列式:把行列式去掉任意一行和一列,转成上三角矩阵,矩阵对角线上元素之积即为行列式的值 于是我们可以用高斯消元把另一半消掉,因为有模数,所以用辗转相除法 ...
分类:
其他好文 时间:
2018-09-17 23:00:01
阅读次数:
173