bzoj 1801: [Ahoi2009]chess 中国象棋 (组合数+DP)
来源:互联网 发布:谁在淘宝上买过精密管 编辑:程序博客网 时间:2024/05/22 12:45
题目描述
传送门
题目大意:在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮。 请问有多少种放置方法。(ps:炮必须是隔一个打一个)
题解
转述一下题意就是:每行每列最多选2个位置的方案数。
代码
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define p 9999973#define N 103#define LL long long using namespace std;int n,m,f[N][N][N],c[N][N];int main(){ freopen("a.in","r",stdin); scanf("%d%d",&n,&m); int t=max(n,m); for (int i=0;i<=t;i++) c[i][0]=1; for (int i=1;i<=t;i++) for (int j=1;j<=i;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%p; f[0][m][0]=1; for (int i=0;i<=n;i++) for (int j=0;j<=m;j++) for (int k=0;k<=m;k++){ if (j+k>m) break; (f[i+1][j][k]+=f[i][j][k])%=p; if (j-2>=0)(f[i+1][j-2][k+2]+=(LL)f[i][j][k]*c[j][2]%p)%=p; if (k-2>=0)(f[i+1][j][k-2]+=(LL)f[i][j][k]*c[k][2]%p)%=p; if (j-1>=0)(f[i+1][j-1][k]+=(LL)f[i][j][k]*c[k][1]%p*c[j][1]%p)%=p; if (j-1>=0)(f[i+1][j-1][k+1]+=(LL)f[i][j][k]*c[j][1]%p)%=p; if (k-1>=0)(f[i+1][j][k-1]+=(LL)f[i][j][k]*c[k][1]%p)%=p; } int ans=0; for (int i=0;i<=m;i++) for (int j=0;j<=m;j++) ans=(ans+f[n][i][j])%p; printf("%d\n",ans);}
阅读全文
0 0
- bzoj 1801: [Ahoi2009]chess 中国象棋 (组合数+DP)
- bzoj 1801 [Ahoi2009]chess 中国象棋 dp
- bzoj 1801: [Ahoi2009] chess 中国象棋
- 【bzoj 1801】: [Ahoi2009]chess 中国象棋
- 【BZOJ 1801】[Ahoi2009]chess 中国象棋
- bzoj 1801 [Ahoi2009]chess 中国象棋
- bzoj 1801: [Ahoi2009]chess 中国象棋
- BZOJ 1801 AHOI2009 Chess 中国象棋
- BZOJ 1801 [Ahoi2009]chess 中国象棋 递推
- bzoj1801: [Ahoi2009]chess 中国象棋(Dp)
- 1801: [Ahoi2009]chess 中国象棋
- 1801: [Ahoi2009]chess 中国象棋
- 1801: [Ahoi2009]chess 中国象棋
- 1801: [Ahoi2009]chess 中国象棋
- Bzoj1801:[Ahoi2009]chess 中国象棋:dp
- bzoj1801 [Ahoi2009]chess 中国象棋 DP
- [DP] BZOJ1801: [Ahoi2009]chess 中国象棋
- bzoj 1801: [Ahoi2009]chess 中国象棋 && bzoj 4806: 炮
- CSS3中不熟悉的属性1:box-pack和box-align
- Unity发布android程序,报错Resource compilation failed!
- linux下安装pip
- vector用法
- iOS:如何优雅的让UITextView根据输入文字实时改变高度
- bzoj 1801: [Ahoi2009]chess 中国象棋 (组合数+DP)
- 显示多张图片
- Linux 安装 composer
- MPI并行程序设计之平行Rank
- 解决inline-block元素默认间距
- Twemproxy 介绍与使用
- Pixhawk_bootloader简介
- 【51Nod】1266 蚂蚁
- 【Linux进阶】Ubuntu 16.04安装ElasticSearch