ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[组合数学]Many Many Paths

2020-02-23 22:00:12  阅读:261  来源: 互联网

标签:Paths r1 Many sum 数学 choose c2 c1 ll


题意

给定\(r1,c1,r2,c2\),求\(\sum^{r2}_{i=r1}{\sum^{c2}_{j=c1}{f(i,j)}}\),其中\(f(i,j)\)表示从\((0,0)\)往上或往右走到\((i,j)\)的方案数

题解

设\(g(r,c)=\sum^{r}_{i=0}{\sum^{c}_{j=0}{f(i,j)}}\)
则\(\sum^{r2}_{i=r1}{\sum^{c2}_{j=c1}{f(i,j)}}=g(r2,c2)-g(r1-1,c2)-g(r2,c1-1)+g(r1-1,c1-1)\)
又\(f(i,j)={i+j \choose j}\)(显然)
则\(g(r,c)=\sum^{r}_{i=0}{\sum^{c}_{j=0}{f(i,j)}}=\sum^{r}_{i=0}{\sum^{c}_{j=0}{{i+j \choose j}}}\)
又\(\sum^{c}_{j=0}{{i+j \choose j}}={i+c+1 \choose c}\)(这是一个公式)
则\(g(r,c)=\sum^{r}_{i=0}{\sum^{c}_{j=0}{f(i,j)}}=\sum^{r}_{i=0}{\sum^{c}_{j=0}{{i+j \choose j}}}=\sum^{r}_{i=0}{{i+c+1 \choose c}}\)
因此\(g(r,c)\)可以在\(O(n)\)时间内求出

代码

#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
typedef long long ll;
const ll mod=1e9+7;

ll f[2000010],invf[2000010];

ll qpow(ll a,ll b){
  ll ret=1;
  while(b){
    if(b&1) ret=ret*a%mod;
    a=a*a%mod;
    b>>=1;
  }
  return ret;
}

void init(ll n=2000005){
  f[0]=1;
  for(ll i=1;i<=n;i++) f[i]=f[i-1]*i%mod;
  invf[n]=qpow(f[n],mod-2);
  for(ll i=n-1;i>=0;i--) invf[i]=invf[i+1]*(i+1)%mod;
}

ll C(ll n,ll m){//O(1)
  if(m>n||m<0) return 0; if(m==n||m==0) return 1;
  return f[n]*invf[m]%mod*invf[n-m]%mod;
}

ll g(ll r,ll c){
  ll ret=0;
  for(ll i=0;i<=r;i++){
    ret=(ret+C(i+c+1,c))%mod;
  }
  return ret;
}

int main()
{
    init();
    ll r1,c1,r2,c2;scanf("%lld%lld%lld%lld",&r1,&c1,&r2,&c2);
    ll ans=(((g(r2,c2)-g(r1-1,c2))%mod-g(r2,c1-1))%mod+g(r1-1,c1-1))%mod;
    ans=(ans+mod)%mod;
    printf("%lld\n",ans);
    return 0;
}

标签:Paths,r1,Many,sum,数学,choose,c2,c1,ll
来源: https://www.cnblogs.com/lllxq/p/12354597.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有