暴力求调
查看原帖
暴力求调
275860
___A__楼主2024/7/17 23:47
3 2 1
1 1
1 2

期望输出1 但我输出了0

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e2+5,mod=1e9+7;
int n,m,k,u[N],r[N],C[N][N],dp[N][N];
int ksm(int x,int n){
    int ret=1;
    while(n){
        if(n%2){
            ret=ret*x%mod;
        }
        x=x*x%mod,n/=2;
    }
    return ret;
}
signed main(){
    cin>>n>>m>>k;
    for(int i=1;i<=m;i++){
        cin>>u[i];
    }
    for(int i=1;i<=m;i++){
        cin>>r[i];
    }
    for(int i=0;i<=n;i++){
        C[i][0]=1;
        for(int j=1;j<=i;j++){
            C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
        }
    }
    for(int i=1;i<=u[1];i++){
        dp[1][n-r[1]]=(dp[1][n-r[1]]+ksm(i,n-r[1])*ksm(u[1]-i,r[1]-1)%mod*C[n][r[1]-1])%mod;
    }
    for(int i=2;i<=m;i++){
        for(int j=0;j<=n;j++){
            for(int k=0;k<=r[i]-1;k++){
                if(j+k<n){
                    for(int num=1;num<=u[i];num++){
                        dp[i][j]=(dp[i][j]+dp[i-1][j+k]*C[j+k][k]%mod*ksm(u[i]-num,k)%mod*ksm(num,j)%mod*C[n-1-j-k][r[i]-1-k]%mod*ksm(u[i]-num,r[i]-1-k)%mod*ksm(num,n-j-r[i]))%mod;
                    }    
                }
            }
        }
    }
    cout<<(dp[m][k]%mod+mod)%mod;
}
2024/7/17 23:47
加载中...