LGV - 求多条不相交路径的方案数
推荐博客 : https://blog.csdn.net/qq_25576697/article/details/81138213
链接:https://www.nowcoder.com/acm/contest/139/A
来源:牛客网
题目描述
Count the number of n x m matrices A satisfying the following condition modulo (109+7).
* Ai, j ∈ {0, 1, 2} for all 1 ≤ i ≤ n, 1 ≤ j ≤ m.
* Ai, j ≤ Ai + 1, j for all 1 ≤ i < n, 1 ≤ j ≤ m.
* Ai, j ≤ Ai, j + 1 for all 1 ≤ i ≤ n, 1 ≤ j < m.
输入描述:
The input consists of several test cases and is terminated by end-of-file.
Each test case contains two integers n and m.
输出描述:
For each test case, print an integer which denotes the result.
示例1
输入
1 2
2 2
1000 1000
输出
6
20
540949876
备注:
* 1 ≤ n, m ≤ 103
* The number of test cases does not exceed 105.
题意 : 格点上的数字只能是 0,1,2 ,求在符合题意的前提下的路径数量
思路分析 : 将一对点向右下平移,得到两对新的点
作者:zzuzxy
链接:https://www.nowcoder.com/discuss/87452?type=101&order=0&pos=4&page=1
来源:牛客网
LGV 算法 (Lindström–Gessel–Viennot lemma)
求以上矩阵的行列式,其中 e(a,b) 是从a到b的方法数,带入求行列式即可得到(a1,a2,...an) 到 (b1,b2,...bn) 的所有不相交路径的种数
思路
考虑01和12的分界线
是(n, 0)到(0,m)的两条不相交(可重合)路径
分界线以及分界线以上的点是一种,分界线下是一种
平移其中一条变成(n-1, -1)到(-1,m-1);
变成
代码示例 :
using namespace std;
#define ll long long
const ll maxn = 1e6+5;
const ll mod = 1e9+7;
const double eps = 1e-9;
const double pi = acos(-1.0);
const ll inf = 0x3f3f3f3f;ll n, m;
ll pp[2005];ll qw(ll x, ll cnt){ll res = 1;while(cnt) {if(cnt&1) res *= x;res %= mod;x = x*x;x %= mod;cnt >>= 1;}return res;
}void init(){pp[0] = 1;for(ll i = 1; i <= 2000; i++) {pp[i] = pp[i-1]*i;pp[i] %= mod;}
}int main() {//freopen("in.txt", "r", stdin);//freopen("out.txt", "w", stdout);init();while(~scanf("%lld%lld", &n, &m)){ll a1 = (pp[n+m]*qw(pp[n], mod-2)%mod)*qw(pp[m], mod-2)%mod;ll a2 = (pp[n+m]*qw(pp[n+1], mod-2)%mod)*qw(pp[n-1], mod-2)%mod;ll a3 = (pp[n+m]*qw(pp[m-1], mod-2)%mod)*qw(pp[m+1], mod-2)%mod;ll ans = a1*a1-a2*a3;printf("%lld\n", (ans%mod+mod)%mod);}return 0;
}
转载于:https://www.cnblogs.com/ccut-ry/p/9404048.html
LGV - 求多条不相交路径的方案数相关推荐
- LGV 引理——二维DAG上 n 点对不相交路径方案数
文章目录 引入 简介 定义 引理 证明 例题 释疑 扩展 引入 有这样一个问题: 甲和乙在一张网格图上,初始位置 (x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2)(x1,y1) ...
- 强训之【走方格的方案数和另类加法】
目录 1.走方格的方案数 1.1题目 1.2思路讲解 1.3代码展示 2.另类加法 2.1题目 2.2思路讲解 2.3代码展示 3.选择题 1.走方格的方案数 1.1题目 链接: link 描述 请计 ...
- 【HDOJ7079】Pty loves lines(计算直线的交点方案数,打表)
Pty loves lines 题意: 平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数,输出方案,n<=700 思路: 原题是HDOJ1466,不过数据只有20. 首先考虑原本简 ...
- “今日头条杯”首届湖北省大学程序设计竞赛 D. Who killed Cock Robin(选择联通子图的方案数,树形dp)
题意: 给定n个点的树,求选出一个联通子图的方案数,答案对1e9+7取模. 数据范围:n<=2e5 解法: 设 d [ x ] 以 x 为 根 的 子 树 中 , 选 择 点 x 之 后 , 连 ...
- 【51nod - 1076】2条不相交的路径(Tarjan无向图判环)
题干: 给出一个无向图G的顶点V和边E.进行Q次查询,查询从G的某个顶点V[s]到另一个顶点V[t],是否存在2条不相交的路径.(两条路径不经过相同的边) (注,无向图中不存在重边,也就是说确定起点和 ...
- _DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径
#pragma once #include<stdio.h> #include<stdlib.h> #define StackSize 100 typedef int Data ...
- 二叉树-求第一条最长路径长度并输出路径
求第一条最长路径长度并输出路径 算法思想 利用递归遍历思想,先求出二叉树最长路径也就是当前树的高度 再调用求路径长度的函数判断指针走向输出路径 int LongestPath(BiTree *T){ ...
- 最大流 ---- 最大不相交路径数 ---- P2766 最长不下降子序列问题(网络流24题)
题目链接 最多不相交路径 这种问题变化比较多,但都能表示成以下形式: 已知一些路径,每个节点只能属于一条路径,求能选择多少条路径使它们不相交. 主要的方法是拆点,将一个点拆成两个,然后连边,容量表示该 ...
- 观光(最短路求方案数2)
题目描述 "您的个人假期"旅行社组织了一次比荷卢经济联盟的巴士之旅. 比荷卢经济联盟有很多公交线路. 每天公共汽车都会从一座城市开往另一座城市. 沿途汽车可能会在一些城市(零或更多 ...
最新文章
- 在Git中,HEAD,工作树和索引之间有什么区别?
- C语言字符型、整型和变量的长度
- 正在更新office_Windows 9月10日累积更新:已修复和损坏的问题
- 用J-Link烧写u-boot到Nor Flash—— 韦东山嵌入式Linux视频学习笔记04
- 【Python】Pandas数据挖掘与分析时的常用方法
- 【李宏毅2020 ML/DL】P106 More about Life Long Learning
- 使用 jsfl 发布flash IDE 插件
- latex中嵌入视频文件
- 信用体系,生态之魂!——保险科技生态建设
- hp服务器修改bios设置密码,HP服务器的BIOS密码
- 用html制作一个中国高铁网页,行者|终于有人制作了一张靠谱的全国高铁地图!...
- 数据库连接池——基本原理
- java 中deff方法_怎么解决java.lang.NoclassDeffFoundError错误【转载】
- python json模块_python json模块使用详情
- Mac不同应用之间切换使用不同输入法
- 16岁女孩攻陷著名安全企业HBGary
- 利用phpstudy在网页输出学号姓名
- mysql8.0怎么样_MySQL8.0初体验
- 基于Android Q 修改默认音量等级
- C#winform 从ftp下载文件(带进度条)、获取文件(夹)的名字