当前位置: 首页 > news >正文

【P2051】中国象棋 - Harvey

题意

求有多少种棋盘使得每一列和每一行的棋子个数不超过 \(2\) 个。

思路

设计 \(f_{i,j,k}\) 表示前 \(i\) 行,有 \(j\) 列为 \(1\) 个棋子,\(k\) 列为 \(0\) 个棋子。

  • 考虑当前行放 \(0\) 个棋子,则有 \(f_{i,j,k} = f_{i-1,j,k}\)
  • 若当前行放 \(1\) 个棋子,一种可能是放在 \(1\) 的列,另一种可能是放在 \(0\) 的列。
  • 若当前行放 \(2\) 个棋子,可以两个都放 \(0\),或者两个都放 \(1\),或者一个放 \(0\) 一个放 \(1\)

对应的情况要乘对应的排列系数,比较显然就不再赘述。

code

#include<bits/stdc++.h>
#define ll long longusing namespace std;const ll N = 105,mod = 9999973,inv = 4999987;int n,m;
ll dp[N][N][N];
void add(ll &x,ll y){(x+=y)%=mod;
}
int main() {cin>>n>>m;ll ans=0;dp[0][0][m]=1;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<=m-j;k++){ll &res=dp[i][j][k];add(res,dp[i-1][j][k]);add(res,dp[i-1][j+1][k]*(j+1)%mod);if(j)add(res,dp[i-1][j-1][k+1]*(k+1)%mod);if(j>=2)add(res,dp[i-1][j-2][k+2]*(k+2)%mod*(k+1)%mod*inv%mod);add(res,dp[i-1][j+2][k]*(j+2)%mod*(j+1)%mod*inv%mod);
//				add(res,dp[i-1][j][k+1]*(k+1)%mod);add(res,dp[i-1][j][k+1]*(k+1)%mod*j%mod);if(i==n)ans=(ans+res)%mod;}}}cout<<ans;return 0;
}
http://www.rkmt.cn/news/6989.html

相关文章:

  • Min-Max 容斥小记
  • 【POJ1737】Connected Graph - Harvey
  • 详细介绍:VirtualBox 免费轻量的全能虚拟机,跨平台系统随心装
  • 实用指南:C++ 类型衰变(Type Decay)
  • 某交互题选讲的补题记录
  • 奶龙抽象语录
  • 详细介绍:javascript文本长度检测与自动截取,用于标题长度检测
  • 解题报告-P11670 [USACO25JAN] Cow Checkups S
  • 解码C语言运算符
  • Sort方法学习(伪代码记录)
  • 完整教程:一篇读懂Pormise!!【前端ES6】
  • P9753 [CSP-S 2023] 消消乐
  • Jenkins CVE-2018-1000600漏洞利用与SSRF攻击分析
  • 详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测
  • 深入解析:PYcharm——pyqt音乐播放器
  • 专题:Python实现贝叶斯线性回归与MCMC采样数据可视化分析2实例|附代码数据
  • CF 2127F Hamed and AghaBalaSar
  • “Sequential Thinking MCP Server 和codex等AI工具本身任务拆解功能对比
  • 题解:P2624 [HNOI2008] 明明的烦恼
  • XXL-JOB (1)
  • 记录---Vue3对接UE,通过MQTT完成通讯
  • 单例模式
  • apache修改默认位置
  • 实用指南:YOLOv11的旋转目标检测改进-(扩展检测头支持旋转框预测,适配遥感场景)
  • 从零到顶会:NLP科研实战手册 - 实践
  • 肝不好能喝酒吗
  • ROS中如何将日志格式设置为行号的形式
  • 深入解析:RxJava在Android中的应用
  • 002_文本分类任务的问答
  • 文件包含漏洞