A Path Plan(2018黑龙江省赛)

Posted lemon-jade

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A Path Plan(2018黑龙江省赛)相关的知识,希望对你有一定的参考价值。

又get 新知识   Lindström–Gessel–Viennot引理

改引理主要是解决n条严格不相交的路径的问题

技术分享图片

其中ai代表路径的起点bi代表路径的终点e(ai,bj)代表aibj的方案数,答案是这个行列式的值 

 

对于这道题而言,知道这个引理,这就是水题啊

code:

#include <bits/stdc++.h>
 
using namespace std;
 
const int MOD = 1e9 + 7;
typedef long long ll;
const int N = 2e5 + 10;
 
ll f[N],finv[N];
ll fast_pow(ll a,ll n)
{
    ll ans = 1;
    while(n)
    {
        if(n&1) ans = (ans * a)%MOD;
        a = (a * a)%MOD;
        n >>= 1;
    }
    return ans;
}
ll C(ll n,ll m)
{
    return (n<0||m<0||n<m)?0:f[n]*(finv[m])%MOD*finv[n-m]%MOD;
}
void init()
{
    f[0]=1;
    for(int i=1;i< N;i++)
        f[i]=f[i-1]*i%MOD;
    finv[N-1] = fast_pow(f[N-1],MOD-2);
    for (int i=N-1; i > 0; i--)
        finv[i-1]=finv[i]*i%MOD;
}
 
int main()
{
    int t;
    init();
    scanf("%d",&t);
    while(t--)
    {
        int a,b,c,d;
        scanf("%d%d%d%d",&a,&b,&c,&d);
        ll ans = (C(a+c,a)*C(b+d,b) % MOD - C(b+c,b)*C(a+d,a) % MOD + MOD)%MOD;
        printf("%lld
",ans);
    }
    return 0;
}

 

以上是关于A Path Plan(2018黑龙江省赛)的主要内容,如果未能解决你的问题,请参考以下文章

2018省赛模拟赛1(2017浙江省赛)

2017年浙江省赛总结

15th 黑龙江省赛 K. Keeping A Secret(排列组合,思维)

15th 黑龙江省赛 K. Keeping A Secret(排列组合,思维)

2019省赛训练组队赛4.9周二 2017浙江省赛

ZJCPC2018 第15届 浙江省赛The 15th Zhejiang Provincial Collegiate Programming Contest(MABLJK 6题)