题目链接

题意概述:n行m列棋盘放若干个棋子每行每列最多两个求方案总数,答案对9999973取模。

可以比较容易看出这是个dp,设f[i][j][k]表示前i行j列放1个棋子k列放2个棋子的方案总数。转移时分类讨论+计数就好了。分类讨论比较麻烦需要仔细考虑一下。

吐槽:我把循环里的m写成n还有50,查了半天(真的半天)取模QAQ

#include<cstring>
#include<iostream>
#include<cctype>
#include<cstdio>
#include<algorithm>
#define now f[i][j][k]
#define ll unsigned long long
using namespace std;
inline int read()
{register int X=0;register char ch=0;bool flag=0;for(; !isdigit(ch); ch=getchar()) if(ch=='-') flag=1;for(; isdigit(ch); ch=getchar()) X=(X<<3)+(X<<1)+ch-'0';return (flag ? -X : X);
}
int N=101;
const ll mod=9999973;
int n,m;
ll f[201][201][201],ans;
int C(int x)
{return x*(x-1)/2;
}
int main()
{n=read(),m=read(),f[0][0][0]=1;for(int i=0;i<n;i++)for(int j=0;j<=m;j++)for(int k=0;k+j<=m;k++){if(now){(f[i+1][j][k]+=now)%=mod;if(m-j-k > 0) (f[i+1][j+1][k]+=now*(m-j-k))%=mod;if(j > 0) (f[i+1][j-1][k+1]+=now*j)%=mod;if(m-j-k > 1) (f[i+1][j+2][k]+=now*(C(m-j-k)%mod))%=mod;if(j > 0 && m-j-k > 0) (f[i+1][j][k+1]+=now*j%mod*(m-j-k))%=mod;if(j > 1) (f[i+1][j-2][k+2]+=now*(C(j)%mod))%=mod;}}for(int i=0; i<=m; i++)for(int j=0; j+i<=m; j++)(ans+=f[n][i][j])%=mod;printf("%llu\n",ans);
}

转载于:https://www.cnblogs.com/mordor/p/9578758.html

洛谷2051 [AHOI2009]中国象棋相关推荐

  1. 洛谷 P2051 [AHOI2009]中国象棋 状态压缩思想DP

    P2051 [AHOI2009]中国象棋 题意: 给定一个n*m的空棋盘,问合法放置任意多个炮有多少种情况.合法放置的意思是棋子炮不会相互打到. 思路: 这道题我们可以发现因为炮是隔一个棋子可以打出去 ...

  2. 洛谷 - P2051 [AHOI2009]中国象棋(计数dp)

    题目链接:点击查看 题目大意:给出一个 n * m 的棋盘,可以在任意位置放置 "炮",问一共可以放置多少种可行的方案 题目分析:转换题意,就是问每一行.每一列至多有两个棋子的方案 ...

  3. BZOJ 1801 [Ahoi2009]中国象棋(线性动规)(洛谷P2051)

    题意:就是在n*m的格子中放"炮"(中国象棋中的棋子)问有多少种放法,使得没有任意的两个炮相互攻击 思路:我们很容易的得到一列或者一行中最多放下两个炮(我也只能得到这些了,满脑子状 ...

  4. LG_2051_[AHOI2009]中国象棋

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

  5. AHOI2009 中国象棋

    题目链接 题目描述 在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法. (在中国象棋中炮的行走方式是:一个炮攻击到另一个炮,当且仅当它们在同 ...

  6. 【洛谷 P2051】 [AHOI2009]中国象棋(DP)

    题目链接 首先想到状压dp,但是\(n,m\)高达100,怎么压? 容易发现,每行每列最多两个象棋,否则就直接gg了. 一个巧妙的设置状态的方式是,只需要记录到当前行有多少列是放了1个炮和2个炮. 然 ...

  7. 洛谷 P4127 [AHOI2009]同类分布

    题意简述 求l~r之间各位数字之和能整除原数的数的个数. 题解思路 数位DP 代码 #include <cstdio> #include <cstring> typedef l ...

  8. [AHOI2009]中国象棋

    https://www.luogu.org/problemnew/show/P2051 C++版本一 数位DP变形 棋子的顺序是无所谓的,并不需要准确知道当前棋盘的状态 于是有了100分做法:dp[i ...

  9. 洛谷P2023 [AHOI2009]维护序列

    数据比线段树2要毒瘤,一直60分的原因是: 1.long long 没开 2.没有边做边%或者像我P3373一样写了个看着像的边做边% 3.要看注释的话可以跳到P3373 上代码 1 #include ...

最新文章

  1. Linux CENTOS7 Linux网络性能测试工具-iperf 安装过程以及示例!
  2. ajax一次请求多条记录,Jquery 一次处理多个ajax请求的代码
  3. RHEL MRTG 系统流量监测的安装和配置
  4. visio网络拓扑图_人船模型怎么画?分享高颜值模型图软件
  5. USACO Training Section 1.2 [USACO1.2]回文平方数
  6. sqlserver 中事务与错误机制的处理
  7. 通讯接口应用笔记2:MAX3160实现多协议通讯
  8. linux上的定时器上的jiffies,Linux kernel -- 定时器/jiffies
  9. Android自动化测试之路——技术准备
  10. selector选择器查询
  11. poj 3422 (费用流)
  12. 网易通行证html代码,JavaScript实现仿网易通行证表单验证
  13. 10道经典java面试题_实习生必问(java基础)
  14. 计算机硬件的五大部分由谁提出,存储程序原理是由谁于1946年提出的,它明确了计算机硬件组成的五大部分() - 问答库...
  15. C语言:输入10个整数,找出其中绝对值最小的数
  16. 美团优选总显示服务器403,最新提示!美团优选商家端登录入口
  17. 【读书笔记】薛兆丰经济学讲义——人人都要掌握的经济学思维
  18. 【信息技术学考】2021年深圳市高中学业水平考试卷(解析版)
  19. 头条项目---01项目介绍和工程搭建
  20. 西电研究生毕业论文latex模板使用指南

热门文章

  1. 还是畅通工程(1233 并查集+kruskal)
  2. 我的一些小想法(聊以一笑……)
  3. 楼燚(yì)航的blog URL
  4. 使用TextRank算法为文本生成关键字和摘要
  5. 人脸识别简史与近期进展
  6. 汉语转拼音pinyin4j
  7. Newton差分插值性质证明(均差与差分的关系证明)
  8. [转]在.NET环境中实现每日构建(Daily Build)--NAnt篇
  9. MyEclipse 中文乱码
  10. 网络中最常用的网络命令(2)-完整参数