牛客网多校训练第一场 A - Monotonic Matrix(Lindström–Gessel–Viennot lemma)
链接:
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,m+1),
变成(n,0)到(0,m)、(n+1,1)到(1,m+1)的严格不相交路径。
套Lindström–Gessel–Viennot lemma,
答案是C(n+m,n) * C(n+m,n) - C(n+m,n+1) * C(n+m,n-1)。
Lindström–Gessel–Viennot lemma简介:
求a1到b1, a2到b2, ..., an到bn的严格不相交路径种数。

计算以上矩阵的行列式即可,其中e(a,b)是从a到b的方法数。
代码:
#include <cstdio> typedef long long int LLI;
const int UP = * + ;
const LLI MOD = 1e9 + ;
LLI f[UP]; // 阶乘 LLI qmod(LLI x, LLI n, LLI mod) { // 快速幂模
x %= mod;
LLI res = ;
while(n) {
if(n & ) res = res * x % mod;
n >>= ;
x = x * x % mod;
}
return res;
} LLI inv(LLI a, LLI mod) { // 逆元
return qmod(a, mod-, mod);
} void constant() { // 预处理阶乘
f[] = ;
for(int i = ; i < UP; i++) f[i] = f[i-] * i % MOD;
} LLI C(int n, int m) { // 组合数,从n个里取m个
return f[n] * inv(f[m]*f[n-m], MOD) % MOD;
} int main() {
constant();
int n, m;
while(~scanf("%d%d", &n, &m)) {
LLI ans = (C(n+m,n) * C(n+m,n) - C(n+m,n+) * C(n+m,n-) % MOD + MOD) % MOD;
printf("%lld\n", ans);
}
return ;
}
牛客网多校训练第一场 A - Monotonic Matrix(Lindström–Gessel–Viennot lemma)的更多相关文章
- 牛客网多校训练第一场 B - Symmetric Matrix(dp)
链接: https://www.nowcoder.com/acm/contest/139/B 题意: 求满足以下条件的n*n矩阵A的数量模m:A(i,j) ∈ {0,1,2}, 1≤i,j≤n.A(i ...
- 牛客网多校训练第一场 I - Substring(后缀数组 + 重复处理)
链接: https://www.nowcoder.com/acm/contest/139/I 题意: 给出一个n(1≤n≤5e4)个字符的字符串s(si ∈ {a,b,c}),求最多可以从n*(n+1 ...
- 牛客网多校训练第一场 J - Different Integers(树状数组 + 问题转换)
链接: https://www.nowcoder.com/acm/contest/139/J 题意: 给出n个整数的序列a(1≤ai≤n)和q个询问(1≤n,q≤1e5),每个询问包含两个整数L和R( ...
- 牛客网多校训练第一场 F - Sum of Maximum(容斥原理 + 拉格朗日插值法)
链接: https://www.nowcoder.com/acm/contest/139/F 题意: 分析: 转载自:http://tokitsukaze.live/2018/07/19/2018ni ...
- 牛客网多校训练第一场 E - Removal(线性DP + 重复处理)
链接: https://www.nowcoder.com/acm/contest/139/E 题意: 给出一个n(1≤n≤1e5)个整数(范围是1至10)的序列,求从中移除m(1≤m≤min(n-1, ...
- 牛客网多校训练第一场 D - Two Graphs
链接: https://www.nowcoder.com/acm/contest/139/D 题意: 两个无向简单图都有n(1≤n≤8)个顶点,图G1有m1条边,图G2有m2条边,问G2有多少个子图与 ...
- 牛客网多校训练第二场D Kth Minimum Clique
链接:https://ac.nowcoder.com/acm/contest/882/D来源:牛客网 Given a vertex-weighted graph with N vertices, fi ...
- 牛客网多校训练第九场H Cutting Bamboos
题目链接:https://ac.nowcoder.com/acm/contest/889/H 题意:给出n颗竹子的高度,q次询问,每次询问给出l,r,x,y,每次选取[l,r]中的竹子,砍y次砍掉所有 ...
- 牛客网多校第3场C-shuffle card 平衡树或stl(rope)
链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 题目描述 Eddy likes to play cards game since there ...
随机推荐
- [PY3]——内置数据结构(4)——字符串格式化(format)
字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...
- jQuery 的动画效果图片----隐藏打开方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue中添加favicon.ico
1.首先将favicon.ico图片放在根目录下 2.修改webpack配置文件 1)找到build下的webpack.dev.conf.js文件 new HtmlWebpackPlugin({ fi ...
- request对象域和转发
1.request是一个域对象,具备以下方法 setAttribute(string name,Object O) getAttribute(String name) removeAttribute( ...
- LinkedList封装
LinkedList简单的封装 package com.cn.test.jihe.LinkedList; import java.util.NoSuchElementException; public ...
- 结构型--代理模式(Proxy)
一.代理模式是什么? 代理模式属于GOF23设计模式中结构型中的设计模式,通过代理对象来屏蔽(部分或者屏蔽)对真实对象的直接访问,下图为UML图: 在代理模式中组件包括:抽象角色接口.代理角色类.真实 ...
- HDU 4283 (第k个出场 区间DP)
http://blog.csdn.net/acm_cxlove/article/details/7964594 http://www.tuicool.com/articles/jyaQ7n http: ...
- git版本控制的使用
特别说明:本文所有知识笔记是学习“表严肃”同学的git课程记录所得. 前辈个人网站地址:http://biaoyansu.com 特此感谢前辈! 一.git是版本控制利器 二.本地创建仓库 1.进入新 ...
- EasyUI combobox 多选及回显赋值
multiple boolean 决定是否支持多项选择. $('#cc').combobox({ url:'combobox_data.json', multiple:true, //支持多选 val ...
- IE8下的怪异模式
使用DWZ框架,老是出现点击button后在winxp IE8下出现新页面,经过检查后发现IE8下submit后,return false就不行了,必须使用window.event.returnVal ...