LGV 引理和 Martrix-Tree 定理
LGV 引理:
LGV 引理是用来处理 \(n\) 条不相邻路径计数问题。
直接从题目开始讲吧。
P6657 【模板】LGV 引理
我们考虑一种存在交点的方案,两条路径会长成这样。

我们考虑构造一个有交路劲到有交路径的双射,找到第一个交点(可以给所有点定义一个拓扑序,例如先行后列,编号从大到小等,找到拓扑序最小的交点),然后将交点以后的两条路径翻转,即上面的两条路径会变成这样。

如果我们能让这两种有交路径抵消掉,最后就只会剩下没有交点的路径。
我们考虑构造 \(n\times n\) 的矩阵 \(M\),使得 \(M_{i,j}\) 表示 \((a_i,1)\) 到 \((b_j,n)\) 的路径数量,我们发现 \(M\) 的行列式就是答案。
对于不相交路径,肯定会被计算恰好一次,我们考虑存在交点的路径,根据上面的双射,找出另一条有交路径,由于排列交换两个元素逆序对奇偶性恰好改变,所以两者抵消。
最后只需要求 \(M\) 的行列式即可。
P7736 [NOI2021] 路径交点
对于一组路径,设 \(p_i\) 表示第 \(i\) 个起点对应的终点,显然 \(p\) 是个排列。
注意到纸上交点数的奇偶性与 \(p\) 的逆序对奇偶性相同。
如果构造 \(n_1\times n_1\) 的矩阵 \(M\),使得 \(M_{i,j}\) 表示第 \(i\) 个起点到第 \(j\) 个终点的路径方案数。
那么 \(M\) 的行列式会把在点上有交点的路径抵消掉,没有交点的路径会有 \((-1)^{\text{inv}p}\) 的系数,正好是纸上交点数的奇偶性,所以 \(M\) 的行列式正好是答案。
所以 LGV 引理求的是不相交路径的带权和。
CF348D Turtles
两条路径不相交肯定一条走 \((1,2)\to(n-1,m)\),另一条走 \((2,1)\to(n,m-1)\)。
直接写 \(2\times 2\) 的矩阵求行列式就行了。
P11704 [ROIR 2025] 旅行路线
首先把题目转化成 \((1,2)\to(n-1,m)\),\((2,1)\to(n,m-1)\),两条路径要经过所有关键点且两条路径不相交。
不考虑相交,先将所有的点排序,只要满足后面的点一定不能走到前边的点就行了。
设 \(f_{i,j}\) 表示现在考虑到第 \(i\) 个关键点,其中一条路径结尾为 \(i\),另一条路径的结尾为 \(j\)。
双射一下,就可以把 \((1,2)\to(n-1,m)\),\((2,1)\to(n,m-1)\) 的有交路径一一映射到 \((1,2)\to(n,m-1)\),\((2,1)\to(n-1,m)\) 的路径上。
把两个都求一遍相减就行了。
qoj3082 Ascending Matrix
先不考虑 \(a_{r,c}=v\) 的条件。
一个关键的转化,画一个 \(n\times m\) 的表格,将这个表格横线和竖线的交点标上坐标,分别是 \((0,0),\dots,(n,m)\)。
我们把 \(\le i\) 和 \(>i\) 的元素画上分界线,那么分界线肯定是 \((n,0)\to(0,m)\) 的一条路径。
这 \(k-1\) 条分界线不能有交叉,但是可以有交点,所以我们把第 \(i\) 条分界线往右 & 往下平移 \(i-1\) 个单位。
那就变成了现在有 \(k-1\) 条路径,起点是 \((n+i-1,i-1)\),终点是 \((i-1,m+i-1)\),这 \(k-1\) 条路径互不相交。
这直接用 LGV 引理做就行了。
如果有 \(a_{r,c}=v\) 的条件,那么需要满足有恰好 \(v-1\) 条线在点 \(P(r+v-2,c+v-2)\) 的左上方,且不存在一条线经过 \(P\)。
求法就是找中转点 \((x_{P}-d,y_{P}-d),1\le d\le\min(x_{P},y_{P})\) 就行了。
若一条线在 \(P\) 的左上方,那么给他赋 \(x\) 的权值,否则给他赋 \(1\) 的权值,那么求行列式后就是个关于 \(x\) 的多项式,答案就是这个多项式的 \(x^{v-1}\) 项系数。
直接算是 \(O(n^5)\) 或者 \(O(n^4\log n)\) 的,但是用一个经典 trick,带入 \(k\) 个点值,最后用 Lagrange 插值求出系数,时间复杂度 \(O(n^4)\)。
其他题目
Matrix-Tree 定理
矩阵树定理是用来求图的生成树个数的,无向图就是生成树个数,有向图则分内向树和外向树,而且要确定根。
公式
无向图版本
给出一个无向无权图,设 \(A\) 为邻接矩阵,\(D\) 为度数矩阵,其中 \(D_{i,i}\) 表示 \(i\) 的度数,其他为 \(0\)。
则其基尔霍夫(Kirchhoff)矩阵为 \(K=D-A\)。
令 \(K'\) 为任意一个 \(K\) 的 \(n-1\) 阶主子式,那么 \(K'\) 的行列式就是生成树个数。
有向图版本
需要改变一下度数矩阵 \(D\) 的定义:
- 若是外向树,此时 \(D\) 定义为入度矩阵。
- 若是内向树,此时 \(D\) 定义为出度矩阵。
带权版本
上述定理是可以有重边的,如果把重边看成一条边的系数,那么一个生成树的权值就是生成树所有边的乘积。矩阵树定理就会求出所有生成树的权值和。
P6624 [省选联考 2020 A 卷] 作业题
将 gcd 用欧拉反演弄掉,枚举 \(d\) 所有边权是 \(d\) 的倍数的边才能用,注意图要联通,所以至少会有 \(n-1\) 条边是 \(d\) 的倍数,所以合法的 \(d\) 只会有 \(O(\frac{\sum\tau(a_i)}{n})\) 种。
现在的问题是如何快速求出所有生成树的边权和的和。
我们给每条边赋一个 \(wx+1\) 的权值,这样其边权的乘积的 \(x\) 项系数就会得到 \(w\) 的和,由于我们只需要 \(1\) 次项,所以只需要维护多项式 \(\bmod x^2\) 的值,所以求一次就是 \(O(n^3)\) 的。
最终复杂度 \(O(n^2\sum\tau(a_i))\)。
CF917D Stranger Trees
考虑一个完全图,原树上的边的权值为 \(x\),其余权值为 \(1\),那么这个图的生成树的权值和的 \(x^k\) 项系数就是公共边数量为 \(k\) 的方案数。
直接带入 \(n\) 个点值,Lagrange 插值求出来就行了,时间复杂度 \(O(n^4)\)。

浙公网安备 33010602011771号