论演员的自我修养
Time Limit 1000MS
Memory Limit 256MB
题目链接https://csustacm.fun/problem/1102
这题和之前武大的校赛的一题题比较像,所以比赛的时候很快就A了。。。
武大校赛的路径计数https://blog.csdn.net/qq_43906000/article/details/89085780
这题没有限制路径的左右走法,所以就不用扣去不合法的路经数了。
而同样我们还是可以找规律:
对于一般的路径计数来讲我们是从零开始答案为1的,而这里是2开始,那么我们只需要在一般的路径计数上吧x坐标和y坐标-2就行了。
一般的路径总数:C(x+y,x),那么这里的就是C(x+y-4,x-2)了。
以下是AC代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int mac=1e5+5;
const int mod=1e9+7;
ll f[mac*2],inv[mac*2];
ll C(ll x,ll y);
int main()
{
ll t,n,m,x,y;
inv[1]=1;
for (int i=2; i<=mac; i++){
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
}
scanf ("%lld%lld%lld%lld",&m,&n,&x,&y);//m<n;
ll ans=C(x+y-4,x-2)%mod;
printf ("%lld\n",ans);
return 0;
}
ll C(ll x,ll y)
{
memset(f,0,sizeof(f));
f[0]=1;
for (int i=1; i<=y; i++){
f[i]=(f[i-1]*((x-i+1)*(inv[i]%mod)%mod))%mod;//求C(n+m-1,i);
}
return f[y];
}