HDU 5852 Intersection is not allowed! ( 2016多校9、不相交路径的方案、LGV定理、行列式计算 )
题意 : 给定方格中第一行的各个起点、再给定最后一行与起点相对应的终点、问你从这些起点出发到各自的终点、不相交的路径有多少条、移动方向只能向下或向右
分析 :
首先对于多起点和多终点的不相交路径、有一个LGV定理
实际上就是 n^2 构造矩阵、再计算其行列式
矩阵的构造方法可以看看这个 ==> Click here
那么接下来就是确定各自路径的方案数了
这是一个经典问题

这里需要求解组合数、用预处理阶乘逆元的方法即可求出
#include<bits/stdc++.h>
#define LL long long
using namespace std;
;
;
LL Fac_inv[Comb_Maxn];
LL Fac[Comb_Maxn];
inline void Comb_init()
{
Fac_inv[] = Fac[] = ;
Fac_inv[] = ;
; i<Comb_Maxn; i++)
Fac[i] = Fac[i-] * (LL)i % mod;
; i<Comb_Maxn; i++)
Fac_inv[i] = (LL)(mod - mod / i) * Fac_inv[mod % i] % mod;
; i<Comb_Maxn; i++)
Fac_inv[i] = Fac_inv[i-] * Fac_inv[i] % mod;
}
LL Comb(int n, int m)
{ return Fac[n] * Fac_inv[m] % mod * Fac_inv[n-m] % mod; }
const int maxm = 1e2;
LL Mat[maxm+][maxm+];
int turn,n;
void gcd(LL a,LL b,LL &d,LL &x,LL &y)
{
,y=;
else{
++turn;
gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}
LL det(LL n)
{
LL tmp1[maxm+],tmp2[maxm+];
LL ans=;
;i<=n;++i){
;j<=n;++j){
){
LL A=Mat[i][i],B=Mat[j][i],d,x,y;
turn=;
gcd(A,B,d,x,y);
;k<=n;++k) tmp1[k]=Mat[i][k],tmp2[k]=Mat[j][k];
;k<=n;++k) Mat[i][k]=(x*tmp1[k]+y*tmp2[k])%mod;
A/=d,B/=d;
) x=B,y=-A,ans=-ans%mod;else x=-B,y=A;
;k<=n;++k) Mat[j][k]=(x*tmp1[k]+y*tmp2[k])%mod;
}
}
ans=ans*Mat[i][i]%mod;
}
) ans+=mod;
return ans;
}
int A[maxm], B[maxm];
int main(void)
{
Comb_init();
int nCase;
scanf("%d", &nCase);
while(nCase--){
int n, k;
scanf("%d %d", &n, &k);
; i<=k; i++) scanf("%d", &A[i]);
; i<=k; i++) scanf("%d", &B[i]);
; i<=k; i++){
; j<=k; j++){
int a, b;
a = n-+B[j]-A[i];
b = n-;
;
|| b < ) Mat[i][j] = ;
else Mat[i][j] = Comb(a, b);
}
}
printf("%lld\n", det(k) % mod);
}
;
}
HDU 5852 Intersection is not allowed! ( 2016多校9、不相交路径的方案、LGV定理、行列式计算 )的更多相关文章
- HDU 5852 Intersection is not allowed!(LGV定理行列式求组合数)题解
题意:有K个棋子在一个大小为N×N的棋盘.一开始,它们都在棋盘的顶端,它们起始的位置是 (1,a1),(1,a2),...,(1,ak) ,它们的目的地是 (n,b1),(n,b2),...,(n,b ...
- hdu 5744 Keep On Movin (2016多校第二场)
Keep On Movin Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)
Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (J ...
- HDU 5732 Subway(2016多校1J,树的重心 + 哈希)
题目链接 2016多校1 Problem J 题意 给定两棵相同的树,但是编号方案不同.求第一棵树上的每个点对应的第二棵树上的点.输出一种方案即可. 首先确定树的直径的中点.两棵树相等意味着两棵树 ...
- hdu 5852 :Intersection is not allowed! 行列式
有K个棋子在一个大小为N×N的棋盘.一开始,它们都在棋盘的顶端,它们起始的位置是 (1,a1),(1,a2),...,(1,ak) ,它们的目的地是 (n,b1),(n,b2),...,(n,bk). ...
- HDU 5795 A Simple Nim (博弈) ---2016杭电多校联合第六场
A Simple Nim Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- hdu 5120 Intersection
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5120 A ring is a 2-D figure bounded by two circles sh ...
- hdu 5120 Intersection 圆环面积交
Intersection Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5 ...
- HDU 5963 朋友 【博弈论】 (2016年中国大学生程序设计竞赛(合肥))
朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Descr ...
随机推荐
- LC 94. Binary Tree Inorder Traversal
问题描述 Given a binary tree, return the inorder traversal of its nodes' values. (左 - 根 - 右) Example: In ...
- S02_CH04_User_IP实验Enter a post title
S02_CH04_User_IP实验 4.1 创建IP 在之前的教程中,我们通过MIO与EMIO来控制LED,所使用的也是官方的IP,实际当中,官方提供的IP不可能涵盖到方方面面,用户需要自己编写硬件 ...
- c# redis密码验证笔记
参考博客https://www.cnblogs.com/qukaicheng/p/7514168.html写的 安装教程https://www.redis.net.cn/tutorial/3503.h ...
- C调用C++(C++封装以及C对其调用)
C调用C++(C++封装以及C对其调用) 来源 https://blog.csdn.net/wonengguwozai/article/details/89854781 相关知识提点:很经典的exte ...
- [NOIP10.5模拟赛]1.a题解--离散化+异或线段树
题目链接: 咕咕咕 https://www.luogu.org/problemnew/show/CF817F 闲扯 在Yali经历几天折磨后信心摧残,T1数据结构裸题考场上连暴力都TM没打满 分析 观 ...
- JavaScript笔记(5)
1.DOM操作 常用的DOM操作 document.getElementById(id); //返回指定id的元素,通用 document.getElementsByTagName(tagName); ...
- JS数组去掉重复元素
JS数组去掉重复元素,这里提供3中写法. var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8]; 输出:[1,2,3,4,5,6,7,8]; 1.使用indexOf() arr.i ...
- 兼容各种浏览器的hack写法
1.Firefox @-moz-document url-prefix() { .selector { property: value; } }上面是仅仅被Firefox浏览器识别的写法 具体如:@- ...
- JSP 内置对象的说明
1 page:指的是当前的JSP页面本身,它是java.lang.object类的对象 2 config对象:它是ServletConfig类的一个实例 3 exception对象:它是java.la ...
- mybatis generator代码生成器的使用
一.有关mybatis generator的使用可以查看如下网址:http://www.mybatis.org/generator/index.html 二.如下是我自己整理的学习步骤: <1& ...