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);}
阅读全文
2 0
- bzoj 4806: 炮
- BZOJ 4806 炮(DP)
- bzoj 1801: [Ahoi2009]chess 中国象棋 && bzoj 4806: 炮
- BZOJ P4806 炮
- [BZOJ ]
- BZOJ****-****
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- BZOJ
- bzoj
- bzoj
- hdu 1800
- Python 小程序
- 阿里面试回来,想和Java程序员谈一谈
- 丢手绢
- 深入Kotlin
- bzoj 4806: 炮
- Redis的快照功能
- 初学Linux--标准输入输出库
- PAT 乙级 1020
- STL空间配置器
- Accelerated C++ 14 Managing memory automatically
- C# 中DaraAdapter 数据适配
- 三种JDBC批量插入编程方法的比较
- 工作半年