zoukankan      html  css  js  c++  java
  • ZOJ 3624 Count Path Pair 排列组合

    思路:在没有限制条件时,很容易知道结果为C(m+n,n)*C(m+q-p,q).

    然后再把相交的情况去除就可以了。而如果想到了就是水题了……

    求A->D,B->C相交的情况可以转化为求A->C,B->D的情况。

    所以结果就为C(m+n,n)*C(m+q-p,q)-C(m+q,m)*C(m+n-p,n).

    代码:

    #include<cstdio>
    #include<algorithm>
    #define M 200001
    #define mod 100000007
    #define ll long long
    using namespace std;
    ll inv(ll x)
    {
        if(x==1) return 1;
        return inv(mod%x)*(mod-mod/x)%mod;
    }
    ll C(ll a,ll b)
    {
        ll u=1,v=1,i,t;
        t=max(b,a-b);
        for(i=0;i<t;i++){
            u=u*(a-i)%mod;
            v=v*(i+1)%mod;
        }
        return u*inv(v)%mod;
    }
    int main()
    {
        ll m,n,q,p;
        while(scanf("%lld%lld%lld%lld",&m,&n,&p,&q)!=EOF){
            ll ans=C(m+n,m)*C(m+q-p,q)%mod-C(m+q,m)*C(m+n-p,n)%mod;
            if(ans<0) ans=(ans+mod)%mod;
            printf("%lld
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    记录s标签范例
    链表问题总结
    Hibernate学习总结
    HDU2460-Network
    CF464C-Substitutes in Number
    CF666E-Forensic Examination
    CF373C-Counting Kangaroos is Fun
    CF558E-A Simple Task
    HDU5669-Road
    CF341D-Iahub and Xors
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3424857.html
Copyright © 2011-2022 走看看