LGV 引理
狭义和广义是本人自己乱定义的,切勿当真。
LGV 引理(狭义)
对于一张有向无环图(有环不行)。
设我们有起点点集 \(A\),和终点点集 \(B\),且集合大小都为 \(t\)。
设一个矩阵 \(M\),\(M_{i,j}\) 代表 \(A_i\to B_j\) 的路径方案数,则有:
其中 \(S\) 为一个排列,第 \(i\) 个数为 \(x\) 代表从 \(A_i\) 走到 \(B_x\)。\(nxd(S)\) 就是求 \(S\) 的逆序对数量,\(C(S)\) 为 \(S\) 的方案数(即使得所有 \(A_i\to B_x\) 且路径不交的路径方案数)。
一般来说,是题目要求右边,我们用左边来求。当然,因为这个逆序对的条件极其苛刻,所以也伸展不开。
LGV 引理(广义)
方便理解,我们设立一个结构体 \(T_i\),含有 \(x,P\),代表从 \(a_i\to b_x\),经过的路径为 \(P\)(可以当做一个数组 \(PATH\) 什么的)。
令 \(S\) 为 \(T_i\) 的集合。
然后设 \(w(P)\) 为 \(P\) 路径上的边权之积。\(e(a,b)\) 为 \(a\to b\) 每一条路径上的 \(w(p)\) 之和。
构造矩阵 \(M\) 使得第 \(i\) 行第 \(j\) 列为 \(e(A_i,B_j)\)。
则有:
边权是可以任意定义的。统计路径方案数时,就令所有边权都为 1,于是就变成了狭义。特殊的题可以将边权设为所需要的,甚至边权是生成函数也可以!
例题
P6657 - 【模板】LGV 引理
https://www.luogu.com.cn/problem/P6657
让 \(a_i,b_i\) 都是从上向下排序。则如果它们不相交,只有一种情况,就是 \(\forall i,a_i\to b_i\)。此时 \(S\) 的逆序对为 0。所以狭义 LGV 引理化简为:
发现右边就是答案,于是计算左边,左边也是答案,于是于是了。
P7736 - [NOI2021] 路径交点
https://www.luogu.com.cn/problem/P7736
咕咕咕咕咕咕