对于一张无边权的DAG图,给定n个起点和对应的n个终点,这n条不相交路径的方案数为 det() (该矩阵的行列式) 其中e(a,b)为图上a到b的方案数 codeforces 348D [给定一张n*m带障碍的图,求从左上角到右下角不相交两条路径的方案] [a1=(1,2) a2=(2,1) b1=(n-1,m) b2=(n,m-1) 应用该定理即可] HDU 5852 [给一张n*n的图,第一行m个点对应第n行的m个点,求路径不相交的方案数] [计算对应的行列式,注意高斯消元不要T] [据说Q…
链接: https://www.nowcoder.com/acm/contest/139/A 题意: 求满足以下条件的n*m矩阵A的数量模(1e9+7):A(i,j) ∈ {0,1,2}, 1≤i≤n, 1≤j≤m.A(i,j) ≤ A(i+1,j), 1≤i<n, 1≤j≤m.A(i,j) ≤ A(i,j+1), 1≤i≤n, 1≤j<m.其中1 ≤ n,m ≤ 1e3. 分析: 考虑01和12的分界线,是(n,0)到(0,m)的两条不相交(可重合)路径.平移其中一条变成(n+1,1)到(1…
题目链接 题意 : 在一个 n * m 的矩阵中放置 {0, 1, 2} 这三个数字.要求 每个元素 A(i, j) <= A(i+1, j) && A(i, j) <= A(i, j+1) .问你合法的构造方案有多少种 分析 : 分析一下限制条件不难得出.其实就是在矩阵中设置两条分界线 使得分界线总左上角到右下角分别是 0.1.2 例如如下的矩阵就是合法的 0 0 1 2 0 1 2 2 1 2 2 2 那么问题就转化成了在矩阵中找出两条可重叠的路径 把矩阵分成三个部分 有一…
https://blog.csdn.net/qq_37025443/article/details/86537261 博客 下面是wiki上的讲解,建议耐心地看一遍...虽然看了可能还是不懂 https://en.wikipedia.org/wiki/Lindström–Gessel–Viennot_lemma Lindström–Gessel–Viennot lemma定理是 起点集合A=(a1,a2,a3..an),终点集合B=(b1.b2,b3,..bn) 假定P是从一条从一个点到另一个点…
解决不相交路径计数 有两个大小为N的点集A,B A上每一个点对应着B的每一个点 求满足条件的路径集合有多少个 图里面可能还有一些障碍 Codeforces 348 D 有一个N*M的网格图 有两个点 从左上角走到右下角 问有几种不同的方案 直接转换一下A集合里面有两个点(1,2)与(2,1) B集合里面有两个点(N-1,M),(N,M-1) HDU 5852 给一个N*N的图 要求从第一行的M个点到第N行的M个点 路径不相交…
e(ai,bi)为从起点ai到终点bi的方案数.以上矩阵行列式结果就是(a1,a2,...an) 到 (b1,b2,...bn) 的所有不相交路径的种数. 具体证明的话看wiki,比较长.. 这个定理在应用时要注意:起点和终点不能是重复的,而且要和原方案等价. 以下是几个相关题目: CodeForces - 348D Turtles(LGV) 牛客网暑期ACM多校训练营(第一场)A Monotonic Matrix(LGV)…
#include<bits/stdc++.h> using namespace std; #define y1 y11 #define fi first #define se second #define pi acos(-1.0) #define LL long long //#define mp make_pair #define pb push_back #define ls rt<<1, l, m #define rs rt<<1|1, m+1, r #defi…
链接:https://www.nowcoder.com/acm/contest/139/A来源:牛客网 Monotonic Matrix 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 Count the number of n x m matrices A satisfying the following condition modulo (109+7). * Ai, j ∈ {0,…
牛客网暑期ACM多校训练营(第一场) A.Monotonic Matrix 这个题就是给你一个n*m的矩阵,往里面填{0,1,2}这三种数,要求是Ai,j⩽Ai+1,j,Ai,j⩽Ai,j+1 ,问你一共有几种填法. 变形一下就会发现其实是走非交叉格子路径计数,限制条件下的非降路径问题.就是从左上到右下走格子路径.从上到下为0——n,从左到右为0——m. 考虑 01 和 12 的分界线,是 (n, 0) 到 (0, m) 的两条不相交(可重合)路径,因为起点重合了,所以把其中一条路径往左上平移了…
题目链接 \(Description\) 给定\(n*m\)的网格,有些格子不能走.求有多少种从\((1,1)\)走到\((n,m)\)的两条不相交路径. \(n,m\leq 3000\). \(Solution\) 容斥,用总方案数减去路径一定相交的方案数. 怎么算呢?注意到两条相交的路径(一定)可以看做从\((1,2)\)到\((n,m-1)\)和从\((2,1)\)到\((n-1,m)\)的两条路径.总方案数也可以看做从\((1,2)\)到\((n-1,m)\)和从\((2,1)\)到\(…