题解:

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

那么很显然是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. day33—前端开发的模块化和组件化

    转行学开发,代码100天——2018-04-18 今天是记录前端开发中模块化.组件化的知识.关于何为模块化,何为组件化以及为何要如此,目前还是处于一个只可意会不可言传的理解应用阶段. 当然,这样的存在 ...

  2. 多个springboot项目部署到tomcat,Error deploying web application archive

    每个springboot单独部署到tomcat下可以正常启动,多个一个就发生异常 Error deploying web application archive 解决:配置文件加上配置区分 sprin ...

  3. Python算法每日一题--002--求众数

    给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3]输出: 3示 ...

  4. knn算法手写字识别案例

    import pandas as pd import numpy as np import matplotlib.pyplot as plt import os from sklearn.neighb ...

  5. webpack2.0 基本使用

    webpack是一款前端模块打包工具, 它的出现是由于现代web开发越来越复杂,如果还是像原来那样把所有的js代码都写到一个文件中,维护非常困难.而解决复杂化的方法通常是分而治之,就是把复杂化的东西进 ...

  6. [洛谷P3261] [JLOI2015]城池攻占(左偏树)

    不得不说,这道题目是真的难,真不愧它的“省选/NOI-”的紫色大火题!!! 花了我晚自习前半节课看题解,写代码,又花了我半节晚自习调代码,真的心态爆炸.基本上改得和题解完全一样了我才过了这道题!真的烦 ...

  7. 关联查询总结,left join 和 inner join 区别和优化

    left join 是做左外关联,主表内容都会显示:符合关联条件的附表内容才会显示出来. inner join 是内关联,没有主表附表的概念:两个表中,同时符合关联条件的数据才会显示出来. left ...

  8. 各种设备在linux中的文件名

    各种设备在linux中的文件名: 设备         设备在linux内的文件名 ide硬盘 /dev/ha[a-d] scs硬盘 /dev/sd[a-p] u盘 /dev/sd[a-p](与SAT ...

  9. JS 页面繁简字转换

    // 本js用于客户在网站页面选择繁体中文或简体中文显示,默认是正常显示,即简繁体同时显示// 在用户第一次访问网页时,会自动检测客户端语言进行操作并提示.此功能可关闭// 本程序只在UTF8编码下测 ...

  10. 141-FMC141-4路 250Msps/16bits ADC, FMC板卡

    FMC141-4路 250Msps/16bits ADC, FMC板卡 一.产品概述: 本板卡基于 FMC 标准板卡,实现 4 路 16-bit/250Msps ADC 功能.遵循 VITA 57 标 ...