(谁告诉我是状压的????)

一行/列最多能放三个炮

30分是让你爆搜的

50分是让你状压的

假设有8列

dp[i][j]表示到第i行且前面列的状态为j (没有/有一个/有两个炮)

然后刷表

100分其实就是在50分的基础上修改了一点

因为发现 并不需要准确的知道之前摆放情况到底是什么样子的

于是dp[i][j][k]表示放了前i行,有j列是有1个棋子,有k列有两个棋子

同样的刷表

#include<bits/stdc++.h>
#define N 105
#define ll long long
using namespace std;
const int mod=9999973;
ll n,m,dp[N][N][N];
int main()
{cin>>n>>m;dp[0][0][0]=1;for(int i=0;i<=n-1;i++){for(int j=0;j<=m;j++){for(int k=0;k+j<=m;k++){dp[i+1][j][k]=(dp[i+1][j][k]+dp[i][j][k])%mod;//放一个在空的那列if(j+1<=m) dp[i+1][j+1][k]=(dp[i+1][j+1][k]+dp[i][j][k]*(m-j-k))%mod; //放一个在放了一个的那列if(k+1<=m) dp[i+1][j-1][k+1]=(dp[i+1][j-1][k+1]+dp[i][j][k]*j)%mod;//放两个在两个放了一个的那两列if(k+2<=m) dp[i+1][j-2][k+2]=(dp[i+1][j-2][k+2]+dp[i][j][k]*(j*(j-1)/2))%mod; //放两个在两列空的if(j+2<=m) dp[i+1][j+2][k]=(dp[i+1][j+2][k]+dp[i][j][k]*((m-j-k)*(m-j-k-1)/2))%mod;//放两个在一个空的 一个放了一个的if(k+1<=m) dp[i+1][j][k+1]=(dp[i+1][j][k+1]+dp[i][j][k]*j*(m-j-k))%mod; }}}ll ans=0;for(int i=0;i<=m;i++)for(int j=0;j+i<=m;j++)ans=(ans+dp[n][i][j])%mod;cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/Patrickpwq/articles/9870518.html

【BZOJ 1801】【AHOI 2009】中国象棋(递推DP)相关推荐

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

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

  2. bzoj 1801: [Ahoi2009]chess 中国象棋 bzoj 4806: 炮

    1801: [Ahoi2009]chess 中国象棋 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1851  Solved: 1062 [Submi ...

  3. BZOJ 1801 AHOI 2009 chess 中国象棋 DP

    题目大意:给出棋盘的大小,问任意行和列放置的棋子都不超过两个有多少种方案. 思路:一个比较麻烦的DP.f[i][j][k]表示到前i行,放置了一个棋子的列为j,放置了两个棋子的列为k的方案数,然后有六 ...

  4. bzoj 1801: [Ahoi2009]chess 中国象棋【dp】

    注意到一行只能放012个炮,我们只需要知道列的状态,不用状压行 所以设f[i][j][k]表示前i行有j列有1个炮,有k列有2个炮的方案数 然后分情况讨论转移就行了 #include<cstdi ...

  5. 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)

    整理的算法模板合集: ACM模板 题目传送门 三段题面,只有第三段是有用的-前两段又长单词又难懂,就是在讲故事...不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句 ...

  6. 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)

    这时yxc上课时讲解的截图. 一般用到tarjan算法的题目步骤都非常相似: tarjan算法 缩点,建图(这里要判重) 按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案. ...

  7. hdu1978(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始: 外循环扫描所有点dp[x] ...

  8. 递推DP URAL 1119 Metro

    题目传送门 1 /* 2 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 3 递推DP:仿照JayYe,处理的很巧妙, ...

  9. Bzoj 1046: [HAOI2007]上升序列 二分,递推

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3671  Solved: 1255 [Submit][St ...

  10. 【bzoj 4451】[Cerc2015]Frightful Formula - 递推

    才没有在做cerc2015呢 看到好像不少人这题写fft卡得死死的啊,不如 O(n) O(n) 递推(雾) 首先可以观察出 (i,1) (i,1)这个格子为 x x时对(n,n)(n,n) a,b a ...

最新文章

  1. Target host is not specified错误
  2. 如何在各类控件中输入/输出数据(学习笔记)
  3. Swift2.0 中的String(一):常用属性
  4. jenkins清除、修改admin主账号的密码
  5. 使计算机工作必不可缺的软件,探讨测绘工程中计算机制图的运用问题(原稿)
  6. SpringMVC中Controller跳转到另一个Controller方法
  7. vue 2个方法先后执行_4个简单靠谱的所得税节税方法,老板看完都批示财务执行...
  8. SQL Server 中 JSON_MODIFY 的使用
  9. java图片资源存放_Java编程中图片文件放哪
  10. 【TensorFlow-windows】(五) CNN(卷积神经网络)对cifar10的识别
  11. leetcode笔记(Python版)待更新
  12. 运动状态估计之卡尔曼滤波详解
  13. 【从C到C++学习笔记】类声明/公有私有保护成员/数据抽象和封装
  14. 链表实现直接选择排序
  15. 卖家如何做亚马逊、Lazada、Shopee、速卖通、wish、eBay、沃尔玛、mercari、Newegg自养号测评?技术分享,带你开启掘金之路。
  16. 基于pytorch计算ssim和ms-ssim
  17. 移动硬盘上装双系统Linux
  18. 小程序-腾讯视频插件
  19. Flash在线文档阅读器::pdf、doc、docx、xls、xlsx、ppt、pptx、htm、txt、rtf、epub、csv、xdoc等
  20. 如何同时给多个视频加水印?

热门文章

  1. Linux下改动Oracle数据库字符集命令
  2. 重新拾起VS2008加入战斗
  3. 转----ASP.NET中常用的优化性能方法
  4. GitHub人脸属性编辑神器横空出世!让你爱上异性的自己!
  5. 不得不服!腾讯优图联合腾讯会议正式上线神奇的眼神接触功能
  6. ICCV2019 视频理解比赛冠军代码库,商汤开源X-Temporal
  7. 2020年最前沿的 8 本AI技术图书—文末留言赠8本
  8. 社招 | 腾讯天天P图 定义视频新科技~base上海
  9. java方法第一次执行比较慢,为什么第一次在Java中调用方法时会出现运行时开销?...
  10. 年薪30万的程序员为啥找不到女朋友?这是我见过最精彩的回答!