题解:

首先知道一个性质,每一行每一列都最多有两个炮

那么很显然是DP

设F[i][j][k]表示前i行,有j列有一个炮,有k列有两个炮,那么转移式子为

这一行什么都不做:f[i][j][k]=f[i-1][j][k]
这一行填一个炮在列为0:f[i][j][k]=f[i-1][j-1][k]*c(m-j-k+1,1)
这一行填一个炮在列为1:f[i][j][k]=f[i-1][j+1][k-1]*c(j+1,1)
这一行填两个炮在列为0:f[i][j][k]=f[i-1][j-2][k]*c(m-j-k+2,2)
这一行填一个炮在列为0一个炮在列为1:f[i][j][k]=f[i-1][j][k-1]*c(j,1)*c(m-j-k+1,1)
这一行填两个炮在列为1:f[i][j][k]=f[i-1][j+2][k-2]*c(j+2,2)

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#define mod 9999973
#define ll long long
using namespace std;
int n,m,ans;
int f[][][],c[][];
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=;i++)c[i][]=;
for(int i=;i<=;i++)
for(int j=;j<=i;j++)c[i][j]=(c[i-][j-]+c[i-][j])%mod;
f[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int k=;j+k<=m;k++)
{
f[i][j][k]=f[i-][j][k];
if(j>=)f[i][j][k]=(f[i][j][k]+(ll)f[i-][j-][k]*c[m-j-k+][]%mod)%mod;
if(k>= && j+<=m)f[i][j][k]=(f[i][j][k]+(ll)f[i-][j+][k-]*c[j+][]%mod)%mod;
if(j>=)f[i][j][k]=(f[i][j][k]+(ll)f[i-][j-][k]*c[m-j-k+][]%mod)%mod;
if(j>= && k>=)f[i][j][k]=(f[i][j][k]+(ll)f[i-][j][k-]*c[j][]%mod*c[m-j-k+][]%mod)%mod;
if(k>= && j+<=m)f[i][j][k]=(f[i][j][k]+(ll)f[i-][j+][k-]*c[j+][])%mod;
}
for(int i=;i<=m;i++)
for(int j=;j<=m;j++)ans=(ans+f[n][i][j])%mod;
return !printf("%d\n",ans);
}

【BZOJ1801】【DTOJ2004】 [Ahoi2009]chess 中国象棋 【DP】的更多相关文章

  1. 【BZOJ1801】[Ahoi2009]chess 中国象棋 DP

    [BZOJ1801][Ahoi2009]chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮 ...

  2. BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )

    dp(i, j, k)表示考虑了前i行, 放了0个炮的有j列, 放了1个炮的有k列. 时间复杂度O(NM^2) -------------------------------------------- ...

  3. bzoj1801: [Ahoi2009]chess 中国象棋 dp

    题意:在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮的行走方式大家应该很清楚吧. 题解:dp[i][j][k]表示到了第i行,有j列 ...

  4. BZOJ 1801: [Ahoi2009]chess 中国象棋 [DP 组合计数]

    http://www.lydsy.com/JudgeOnline/problem.php?id=1801 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放 ...

  5. BZOJ1801 Ahoi2009 chess 中国象棋 【DP+组合计数】*

    BZOJ1801 Ahoi2009 chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮的行 ...

  6. bzoj1801: [Ahoi2009]chess 中国象棋(DP)

    1801: [Ahoi2009]chess 中国象棋 题目:传送门 题解: 表示自己的DP菜的抠脚 %题解... 定义f[i][j][k]表示前i行 仅有一个棋子的有j列 有两个棋子的有k个 的方案数 ...

  7. BZOJ1801 [Ahoi2009]chess 中国象棋(DP, 计数)

    题目链接 [Ahoi2009]chess 中国象棋 设$f[i][j][k]$为前i行,$j$列放了1个棋子,$k$列放了2个棋子的方案数 分6种情况讨论,依次状态转移. #include <b ...

  8. BZOJ_1801_[Ahoi2009]chess 中国象棋_DP

    BZOJ_1801_[Ahoi2009]chess 中国象棋_DP Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像 ...

  9. Bzoj 1081 [Ahoi2009] chess 中国象棋

    bzoj 1081 [Ahoi2009] chess 中国象棋 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1801 状态比较难设,的确 ...

  10. [luogu2051][bzoj1801][AHOI2009]chess中国象棋【动态规划】

    题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法.大家肯定很清楚,在中国象棋中炮的行走方式是 ...

随机推荐

  1. threading.get_ident()

    https://docs.python.org/3/library/threading.html Return the 'thread identifier' of the current threa ...

  2. MIME TYPE是什么?

    首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF.还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME T ...

  3. gitlab+jenkins自动化打包IOS-jenkins配置

    实现的效果如图:  构建界面: 完成效果: 功能说明: 根据选择的代码分支,执行构建打包 构建成功后根据ipa/apk生成二维码,并可在历史构建列表中展示各个版本的二维码,通过手机扫描二维码可直接安装 ...

  4. shell脚本一一项目3

    主题:批量创建100个用户并设置密码 脚本内容 user_list=$@user_file=./user.infofor USER in ${user_list};do if ! id $USER & ...

  5. Unity 指定参数

    构造函数参数初始化 InjectionConstructor IContainer.RegisterType<T, Class>(new InjectionConstructor(&quo ...

  6. PHP 数组函数-数组排序

    php数组排序函数sort ( &$arr [,fruits] ) 对数组进行从低到高排序 ,并赋予新的键名 返回boolrsort ( &$arr [,fruits] ) 对数组进行 ...

  7. hdu1257最少拦截系统 动态规划(最长递增子序列(LIS))

    Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高 ...

  8. Java IO(3)

    字符流相关 字符流基本上可以类比字节流 只不过是将字节流的byte 换为char. 最根本的两个类是Reader以及Writer Reader的子类有:BufferedReader, CharArra ...

  9. python pip报错pip._ vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

    AttributeError: module 'pip' has no attribute 'main报错 找到安装目录下 helpers/packaging_tool.py文件,找到如下代码: de ...

  10. zabbix 微信告警配置

    作者信息 邮箱:sijiayong000@163.com Q Q:601566386 Zabbix 微信告警 摘要:Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是 ...