Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
24635 yuanjiabao 【S】T2 C++ 运行出错 30 200 MS 438284 KB 1304 2024-01-11 15:14:33

Tests(6/20):


#include<iostream> #include<vector> #include<algorithm> #include<set> using namespace std; #define int long long const int N=310,P=1000000007; inline int fpow(int a,int b=P-2){ int c=1; for(;b;b>>=1,a=a*a%P)if(b&1)c=c*a%P; return c; } int n,m; int fac[N],ifac[N]; inline int c(int n,int m){ if(n<m||m<0)return 0; return fac[n]*ifac[m]%P*ifac[n-m]%P; } void init(){ fac[0]=1; for(int i=1;i<N;i++)fac[i]=fac[i-1]*i%P; ifac[N-1]=fpow(fac[N-1]); for(int i=N-1;i;i--)ifac[i-1]=ifac[i]*i%P; } int f[N][N][N],suf[N][N][N]; signed main(){ // freopen("read.in","r",stdin); // freopen("life.out","w",stdout); cin>>n>>m; init(); f[0][0][0]=1; int s=min(n,m*2); suf[0][0][0]=1; for(int i=1;i<=s;i++){ for(int j=1;j<=i;j++){ for(int k=j;k;k--){ f[i][j][k]=(f[i-1][j-1][k-1]*(m-j+1)+suf[i-1][j][k+1])%P; suf[i][j][k]=(suf[i][j][k+1]+f[i][j][k])%P; } } } int ans=0; for(int i=1;i<=s;i++){ int res=0; for(int j=1;j<=s;j++) for(int k=1;k<=s;k++)res=(res+f[i][j][k])%P; // cout<<res<<' '<<res*c(n-1,i-1)<<endl; ans=(ans+res*c(n-1,i-1))%P; } cout<<ans; return 0; }


测评信息: