bzoj 4806: 炮

来源:互联网 发布:周杰伦婚礼进行曲 知乎 编辑:程序博客网 时间:2024/05/01 19:39

同bzoj1801改个模数。
code:

#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#define LL long longusing namespace std;const LL mod=999983;LL n,m,c[150][3],f[110][110][110];void pre(){    memset(c,0,sizeof(c));    c[0][0]=1;    for(LL i=1;i<=110;i++)    {        c[i][0]=1;        for(LL j=1;j<=2&&j<=i;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;    }}int main(){    pre();    scanf("%lld %lld",&n,&m);    memset(f,0,sizeof(f));    f[0][0][0]=1;    for(LL i=1;i<=n;i++)        for(LL j=0;j<=m;j++)            for(LL k=0;k<=m-j;k++)            {                if(2*i<j*2+k) break;                if(j>=1) (f[i][j][k]+=f[i-1][j-1][k+1]*(k+1))%=mod;                (f[i][j][k]+=f[i-1][j][k-1]*(m-k+1-j))%=mod;                if(k>=2) (f[i][j][k]+=f[i-1][j][k-2]*c[m-k+2-j][2])%=mod;                if(j>=1) (f[i][j][k]+=f[i-1][j-1][k]*k%mod*(m-j+1-k))%=mod;                if(j>=2) (f[i][j][k]+=f[i-1][j-2][k+2]*c[k+2][2])%=mod;                (f[i][j][k]+=f[i-1][j][k])%=mod;            }    LL ans=0;    for(LL j=0;j<=m;j++)            for(LL k=0;k<=m-j;k++) (ans+=f[n][j][k])%=mod;    printf("%lld",ans);}
原创粉丝点击