LGV定理

LGV定理用于解决路径不相交问题。

定理

(n) 个起点 (1, 2, 3, ..., n),它们 分别对应 要到 (n) 个终点 (A, B, C, ..., X),并且要求路径点不相交。求方案数。

(e_{i, W}) 表示从起点 (i) 到终点 (W) 的方案数。则最终答案为:

[egin{vmatrix} e_{1, A} & e_{1,B} & ... & e_{1, X}\ e_{2, A} & e_{2, B} & ... & e_{2, X}\ ... & ... & ... & ...\ e_{n, A} & e_{n, B} & ... & e_{n, X}end{vmatrix}]

(这俩竖线是行列式的意思)

其中 (n = 2) 的情况挺好理解的,因为它表示出来是:

[egin{vmatrix} e_{1, A} & e_{1, B}\ e_{2, A} & e_{2, B}end{vmatrix}]

即:

[e_{1, A} * e_{2, B} - e_{1, B} * e_{2, A} ]

前面部分是不考虑“不相交”的合法方案数。但是可能会有相交的情况。我们发现如果在第一个相交点的地方偷偷的交换一下路径的来源,那么每一种不合法路径唯一对应一种 1 到 (B),2 到 (A) 的路径;同时每一种 1 到 (B),2 到 (A) 的路径唯一对应一种不合法路径。因此可以用 (e_{1, B} * e_{2, A}) 来计算不合法路径。然后容斥即可。

这种方法类似求卡特兰数通项公式的方法。

实际上 (n > 2) 的情况也可以用容斥思想感性理解。

例题:CF348D Turtles

(n = 2) 时的板子题。直接DP求解出 (e),然后手算行列式即可。

原文地址:https://www.cnblogs.com/JiaZP/p/13307642.html