A Path Plan(2018黑龙江省赛)

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

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

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

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

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\n",ans);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/lemon-jade/p/9594536.html

时间: 2024-08-08 04:35:47

A Path Plan(2018黑龙江省赛)的相关文章

2015黑龙江省赛记

            应该说从高中毕业后就很少写过文章了,其实这篇文章本来是学校要求写成比赛总结,想了想发篇博文得了.接下来我要讲述这段下学期的传奇经历,出现的人名字母代替.全文就围绕省赛来说吧,整个大一历程,暑假后描述.           因为是山东的上学期基本疯狂玩耍,期末照样年级12,但是实际编程水平真的是谈不上,但始终种着一颗开始编程的种子,结果这学期让他萌发了!从这学期才开始正式刷oj题目.夜也熬过,课该逃的能逃的 基本都没落下!经历了校赛被虐,之后全身心投入省赛选拔.好了故事就此

hdu6223 Infinite Fraction Path 2017沈阳区域赛G题 bfs加剪枝(好题)

题目传送门 题目大意:给出n座城市,每个城市都有一个0到9的val,城市的编号是从0到n-1,从i位置出发,只能走到(i*i+1)%n这个位置,从任意起点开始,每走一步都会得到一个数字,走n-1步,会得到一个长度为n的数列,输出能得到的最大的数列(当成数字). 思路: 一个数字肯定是最高位越大,这个数字本身就越大,所以肯定第一位要取最大值,在这一位取最大值的时候后面每一位都要尽量最大,所以想到bfs. 但是bfs肯定要剪枝,怎么剪枝呢? 1.按照思路,我要取每一位尽可能大的值,所以某一个状态的某

2018湖南省赛B题“2018”

题面懒得敲了,反正看这篇博客的肯定知道题面. 比赛时想按约数的一些性质分情况讨论出公式然后在合并,结果单考虑矩阵里出现2018和1009(与2互质,1009出现次数等于2)出现的情况就写了一长串公式,还推了很久.在考虑1出现的综合情况就直接GG了.. 然后想到打表,奈何队友卡H题很久,最终因时间原因放弃来做B的时候已经冷静不下来了,没能打表成功,于是今天决定补一手打表. 我首先敲了dfs暴搜二维数组的,然后类比的(找了半天BUG)终于成功打出来了..还是要好好练练打表,比赛卡这样的题真难受. 1

2018 女生赛 F - 赛题分析

著名出题人小Q每次比赛后都会写一份<赛题分析>,包含比赛概况.每题的参考算法以及一些统计数值. 对于一道题来说,小Q会统计最短的验题人代码长度(Shortest judge solution)以及赛内参赛队伍最短的AC代码长度(Shortest team solution). 统计验题人代码长度比较容易,因为验题人最多也不会超过2020 个.但是统计选手代码长度就不容易了,因为大赛区动辄三四百支队伍. 请写一个程序,帮助小Q统计最短代码长度.Input第一行包含一个正整数T(1≤T≤13)T(

黑龙江省赛The minimum square sum

题目 The minimum square sum Time Limit 1000ms Memory Limit 65536K description Given a prime p (p<108),you are to find min{x2+y2},where x and y belongs to positive integer, so that x2+y2=0 (mod p). input Every line is a p. No more than 10001 test cases.

2018省赛赛第一次训练题解和ac代码

第一次就去拉了点思维很神奇的CF题目 # Origin Title     A CodeForces 607A Chain Reaction     B CodeForces 385C Bear and Prime Numbers     C CodeForces 670D2 Magic Powder - 2     D CodeForces 360B Levko and Array     E CodeForces 68B Energy exchange     F CodeForces 24

【2018天梯赛】L2-026. 小字辈

本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到 N 编号.随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母.家谱中辈分最高的老祖宗对应的父/母编号为 -1.一行中的数字间以空格分隔. 输出格式: 首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增).然后在第二行按递增顺序输出辈分最小的成员的编号.编号间以一个空格分隔,行首尾不得有多余空格.

2018黑龙江省选总结

从我和LX,LCJ两位队友一起组队已经有一段时间了,毕竟刚进行组合,在训练的时候还需要很多磨合的地方,不如老队伍之间配合的默契,在训练的初期需要磨合,毕竟acm和OI不是很一样,对于思路的讨论不只是自己的思考,也需要让队友了解你的想法,即使想法是错的,但正解有可能就藏在其中,对于省选之前的训练,结束以后大家都会分一下补题,补题大体来说也还算顺利,毕竟训练的时候一般都会有一个想法,然后赛后询问其他人,基本也是同样的方法,总是会被卡在初始化写错或者题意理解的有偏差之类的,对于初始化总是写错这件事,基

2018山东省赛 E Sequence ( 思维 )

题目链接 题意 : 给出一个排列,让你删除一个数,使得删除后整个序列的 Good 数数量最多.Good 数的定义为 若 Ai 为 Good 则存在 Aj < Ai ( j < i ) 分析 :  画画几个规律就能得出如下几个结论 ① 若删除一个 Good 数,则原序列 Good 数的数量只会减一,即只会影响到这个 Good 数本身 这个也不难证明,若 Ai 是 Good 数,则存在  Aj < Ai ( j < i ) 考虑当前有 Good 数 Ak 因删除 Ai 而变成非 Goo