链接:http://codeforces.com/contest/348/problem/D
两只乌龟在棋盘上从(1,1)出发到(n,m),其中有的地方有障碍物,两只乌龟希望找到有多少对路径,使得他们到(n,m)的路上不相交。
如果我没有做牛客多校,我也不会知道这个冷艳的Lindstrom-Gessel-Viennot引理。今天翻笔记看到了,还记得CF上有一道考这个的,于是来除草。
这东西出题很单一,就是用来计算n对起止点不相交路径组合数的,出题也挺单一,其中的一个trick可能是在拆点这方面,给出公式:
其中$e(a_i,b_j)$表示从起点$a_i$到终点$b_j$的路径数,M的行列式的值就是我们要求的不相交路径的组合数了。
关于拆点,一般都是移动到起点附近步长为1的位置,终点也是,具体我不太明白,希望有朝一日能证明出来:)
这题的DP方程就很简单了,看代码吧:
1 |
|
哈,除草真开心啊!