Time Limit: 10 Sec  Memory Limit: 64 MB

Description

在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮。 请问有多少种放置方法,中国像棋中炮的行走方式大家应该很清楚吧.

Input

一行包含两个整数N,M,中间用空格分开.

Output

输出所有的方案数,由于值比较大,输出其mod 9999973

Sample Input

1 3

Sample Output

7

HINT

除了在3个格子中都放满炮的的情况外,其它的都可以.

100%的数据中N,M不超过100
50%的数据中,N,M至少有一个数不超过8
30%的数据中,N,M均不超过6

Source

Day2

用f[i][j][k]在前i行有j行放了一个炮,有k行放了两个炮。

所以这道题的转移有6种

1.不放

2.在未放过的一列放一个

3.在已经放一个的一列放一个

4.在未放过的一列放两个

5.在已经放过一个的两列各放一个

6.分别在未放过的和已经放一个的一列各放一个

#include<cstdio>
typedef long long ll;
const int mod=;
int f[][][];
int main()
{
int n,m,ans=;
scanf("%d%d",&n,&m);
f[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int k=;k+j<=m;k++)
{
f[i][j][k]=f[i-][j][k];
if(j) f[i][j][k]+=(ll)(m-j-k+)*f[i-][j-][k]%mod,f[i][j][k]%=mod;
if(k) f[i][j][k]+=((ll)(j+)*f[i-][j+][k-]+(ll)(m-j-k+)*j%mod*f[i-][j][k-])%mod,f[i][j][k]%=mod;
if(k>) f[i][j][k]+=((ll)(j+)*(j+)/%mod*f[i-][j+][k-])%mod,f[i][j][k]%=mod;
if(j>) f[i][j][k]+=(ll)(m-j+-k)*(m-j+-k)/%mod*f[i-][j-][k]%mod,f[i][j][k]%=mod;
if(i==n) ans+=f[i][j][k],ans%=mod;
}
printf("%d",ans);
return ;
}

BZOJ1801:[Ahoi2009]chess 中国象棋的更多相关文章

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

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

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

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

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

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

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

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

  5. BZOJ1801 [Ahoi2009]chess 中国象棋 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1801 题意概括 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请 ...

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

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

  7. BZOJ1801 [Ahoi2009]chess 中国象棋 【dp】

    题目 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮的行走方式大家应该很清楚吧. 输入格式 一行包含两个整数N,M,中间用空格分开. ...

  8. bzoj1801[AHOI2009]CHESS中国象棋

    题意:在棋盘上放一些炮使得它们不互相攻击.其实就是一行/一列最多放两个. 50分的数据中n,m至少有一个不超过8,比较直接的想法是对n/m中较小的一维做状态压缩,状态f[i][S1][S2]表示在前i ...

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

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

随机推荐

  1. 51nod 1643 小Q的家庭作业

    题意: f(n) = sigma(gcd(i,n))  1 <= i <= n g(n) = sigma(f(d))    d | n n = x1 * x2 * ... * xm 其中 ...

  2. PCB设计中的20H原则

    20H原则是指电源层相对地层内缩20H的距离,当然也是为抑制边缘辐射效应.在板的边缘会向外辐射电磁干扰.将电源层内缩,使得电场只在接地层的范围内传导.有效的提高了EMC.若内缩20H则可以将70%的电 ...

  3. windows10降低IE版本

    win10支持的最低IE版本为IE10,现在IE最新版本为IE11,而win10自带的浏览器是microsoft  EDGE ,这给 以前的老系统带来很多不便,为了支持以前的老系统,只有降低IE浏览器 ...

  4. 部署web应用

    package it.cast.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servle ...

  5. xcode 工具学习笔记

    1. 快速打开辅助界面   快捷键:使用Option + 单击文件   2. 辅助编辑器更多打开方式   快捷键: Option+shift +单击文件   3. tab页面快捷键   快捷键: Co ...

  6. ZOJ 3481. Expand Tab

    题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4278 题意: 给出一些文本片段,把文本中的 Tab 字符根据配置,替换成 ...

  7. 小结一下: web中的人民币

    在编辑器中 shift+4  以为得到的是 两杠人民币符号(¥)---->但是.....在ie6,7,8下怎么不是呀? 对比一下下图: 下面那个是ok的哈: 要用时可以复制一下:     ¥ 完 ...

  8. iOS各种开源类库

    KissXml——xml解析库 相关教程:http://www.iteye.com/topic/625849 http://sencho.blog.163.com/blog/static/830562 ...

  9. 腾讯云Centos下Nginx反向代理Apache+Tomcat

    1. 安装Apahce, PHP, MySQL以及php连接mysql库的组件#yum -y install httpd php mysql mysql-server php-mysql     // ...

  10. 二模12day1解题报告

    T1.笨笨与电影票(ticket) 有n个1和m个0,求每个数前1的个数都大于等于0的个数的排列数. 非常坑的一道题,推导过程很烦.首先求出所有排列数是 C(n+m,m),然后算不合法的个数. 假设存 ...