Matrix-Tree定理
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[矩阵树定理 拉格朗日插值] TCO14 Round 3B TreeDistance
考虑两棵树,最少需要多少步把其中一棵变成另一棵? 可以发现答案就是不同的边数。即存在于A中而不存在于B中的边 数。 相当于要求:有多少带标号无根树,只有≤ kk 条原树中没有的边? 把原树中的边设成11,不在原树中的边设成xx,跑矩阵树定理,得出 来是一个nn阶多项式。 xi(i≤k)x_i(i ≤ k)前的系数和就是答案// BEGIN CUT HERE #include<coni原创 2017-04-04 13:18:28 · 817 阅读 · 0 评论 -
[meet in middle 矩阵树定理 容斥原理] SRM 551 div1 SweetFruits
集训队论文传送门大概就是我们先用meet in middle求出有恰好k个真甜的方案数 然后我们求这些东西的生成树个数 乘在一起的和就是答案 我们让真甜连真甜 真甜连不甜 假甜连不甜 不甜连不甜 跑一发矩阵树定理 这样只能保证这些真甜的某个子集是真甜 那么我们需要用 0~k-1 的简单容斥一下// BEGIN CUT HERE #include<conio.h> #include<sstr原创 2017-04-10 22:14:32 · 645 阅读 · 0 评论 -
[矩阵树定理] BZOJ 3534 [Sdoi2014]重建
这里有个奇怪的词条 变元矩阵-树定理 也就是说 基尔霍夫矩阵的任意一个代数余子式是所有生成树的边权积的和 我们直接会得出∑T∏e∈Tpe\sum_T \prod_{e\in T} p_e 但这样不对 应该是 ∑T(∏e∈Tpe∏e∉T(1−pe))\sum_T ( \prod_{e\in T} p_e \prod_{e\notin T} (1-p_e) ) 所以我们变幻一下边权 求出∑T∏e原创 2017-02-17 21:45:15 · 903 阅读 · 0 评论 -
[矩阵树定理 模板题] BZOJ 1016 [JSOI2008]最小生成树计数 & HDU 4408 Minimum Spanning Tree
根据Kruscal算法的过程 我们可以得到一些结论 来自 这里 如果 A,BA, B 同为 GG 的最小生成树,且 AA 的边权从小到大为 w(a1),w(a2),w(a3),⋯w(an)w(a_1), w(a_2), w(a_3), \cdots w(a_n),BB 的边权从小到大为 w(b1),w(b2),w(b3),⋯w(bn)w(b_1), w(b_2), w(b_3), \cdots w原创 2017-02-17 21:30:46 · 500 阅读 · 0 评论 -
[有向图树形图计数] BZOJ 4894 天赋
根本不知道题面在讲什么 矩阵树定理有向图版本 邻接矩阵还是邻接矩阵 度数矩阵根据是出度还是入度分别计算内向树和外向树#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typedef long long ll;const int N=305; const int P=1e9+7;int n; cha原创 2017-05-05 08:35:34 · 1378 阅读 · 0 评论 -
[BEST定理 矩阵树定理] BZOJ 3659 Which Dreamed It
BEST theorem 一个证明?注意区分下题目中要求的“欧拉回路”的条数和定理中欧拉回路的条数 欧拉回路是个回路 所以存在循环同构 题中要求起点是1 实际上还要乘上1的度数 因为从1的任一边出发在题中都算作一种不同方案#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typedef lon原创 2017-05-06 07:04:50 · 1646 阅读 · 0 评论 -
[线代小记] 树形图求和
未经允许搬了过来代码略丑#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+f原创 2017-07-23 13:55:01 · 878 阅读 · 0 评论