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

202509 组合数学与计数类 DP 笔记

1. P2051 [AHOI2009] 中国象棋

一格一格进行考虑做 DP 想不出来,考虑到一行实际上只需要选两格进行操作,因此可以一行一行操作。

\(f_{i,j,k}\) 表示考虑到第 \(i\) 行,有 \(m-j-k\) 列有 \(0\) 个棋子,有 \(j\) 列有 \(1\) 个棋子,有 \(k\) 列有 \(2\) 个棋子。边界条件为 \(f_{0,0,0}=1\)。考虑 \(i-1\to i\) 的转移分类讨论。

  • \(i\) 行放 \(0\) 个:不变。
  • \(i\) 行放 \(1\) 个:可以在 \(j+1\) 列里面选一列变成 \(2\) 个棋子的,\(0\)\(\to 1\) 个同理。
  • \(i\) 行放 \(2\) 个:可以选择两列 \(0\),选择两列 \(1\) 或选择一列 \(0\)、一列 \(1\) 进行放置,分别分类讨论,乘上选择其中几列的方案数即可。

最终没有规定有几列 \(1/2\),因此答案是 \(\sum_{i,j} f_{n,i,j}\)

状态数 \(O(n^3)\),转移 \(O(1)\),时间复杂度 \(O(n^3)\),空间复杂度 \(O(n^3)\)

2. P3158 [CQOI2011] 放棋子

\(f_{\mathrm{id},i,j}\) 表示考虑了前 \(\mathrm{id}\) 种颜色,现在已经占据了 \(i\)\(j\) 列。边界条件 \(f_{0,0,0}=1\)

那么枚举第 \(i-1\) 列占据了 \(p\)\(q\) 列,那么第 \(\mathrm{id}\) 种颜色就占据了 \(\mathrm{dx}=i-p\) 行,\(\mathrm{dy}=j-q\) 列。先从剩下的 \(n-p\) 行里选这么多行出来:\(\binom{n-p}{\mathrm{dx}}\binom{m-q}{\mathrm{dy}}\),然后再乘上 \(\mathrm{dx}\)\(\mathrm{dy}\) 列放 \(a_{\mathrm{id}}\) 个棋子的方案数,记作 \(g_{\mathrm{id},\mathrm{dx},\mathrm{dy}}\)

考虑求 \(g_{\mathrm{id},i,j}\),首先直接从 \(i\)\(j\) 列里面选 \(\mathrm{id}\) 个出来:\(\binom{i\times j}{\mathrm{id}}\)。但是有可能实际只占据了 \(p\)\(q\) 列,可能的方案是 \(g_{\mathrm{id},p,q}\times \binom i p\times \binom j q\),容斥减去即可。

状态数 \(O(nmc)\),转移 \(O(nm)\),时间复杂度 \(O(n^2m^2c)\),空间复杂度 \(O(nmc)\)

3. AT_abc180_f [ABC180F] Unbranched

容斥的另一种体现:差分。

当恰好连通块最大为 \(L\) 不好做时,考虑转换为最多为 \(L\),减去最多为 \(L-1\) 的答案。

\(f_{i,j}\) 表示考虑了 \(i\) 个点 \(j\) 条边且每个连通块的大小都不超过 \(L\) 的方案数。边界条件为 \(f_{0,0}=1\)

考虑 \(\to i,j\) 转移,枚举当前连通块的大小 \(k\)。考虑链的情况,则需要 \(k-1\) 条边:\(f_{i-k,j-k+1}\to f_{i,j}\)。如果这条链的点直接在剩下的点里面随便选的话,可能会选出 \(1-2-3,4-5-6\)\(4-5-6,1-2-3\) 两种本质相同的情况。解决方案就是强制选当前未选的点的最小点。然后选好点只有,有 \(k!\) 种排列方式。除掉 \(1-2\)\(2-1\) 这样重复的排列情况,综上:

\[f_{i,j}\gets f_{i,j}+f_{i-k,j-k+1}\times \binom {n-i+k-1}{k-1}\times k!\div 2 \]

接着环的情况也是一样的,只不过要多选一条边,还要除去环同构的情况(\(1-2-3-1\)\(2-3-1-2\))。

\[f_{i,j}\gets f_{i,j}+f_{i-k,j-k}\times \binom {n-i+k-1}{k-1}\times k!\div 2\div k \]

细节是大小为 \(1\) 的链和 \(2\) 的环没有算出来两个颠倒的的情况,不需要 \(\div 2\)

状态数 \(O(NM)\),转移 \(O(L)\),时间复杂度 \(O(NML)\),空间复杂度 \(O(NM)\)

http://www.wxhsa.cn/company.asp?id=7010

相关文章:

  • edu 106 E(LCS dp + 多源bfs优化)
  • ABC310E NAND repeatedly 题解
  • MyBatis插入语句配置
  • 操作运算符
  • 看 NOI2025 游记记
  • 整体二分
  • 得力 - Bruce
  • 短视频营销运营导师张伽赫,绳木传媒AI+短视频引领企业数字化变革
  • 详细介绍:还在重启应用改 Topic?Spring Boot 动态 Kafka 消费的“终极形态”
  • 用 TensorFlow 和 CNN 实现验证码识别
  • 用 PyTorch 和 CNN 进行验证码识别
  • 用 Keras 和 CNN 进行验证码识别
  • 从 Bank Conflict 数学表示看 Buffer 设计 Trade-Off
  • 被彼此笼罩 任泪水将我们缠绕 深陷入恶魔的拥抱 在阴冷黑暗处灼烧 吞下这毒药
  • mysql无法连接服务器的mysql #mysql8
  • DAG 最小路径覆盖问题 笔记
  • SP3D c# 开发独立的exe
  • python错误code
  • 瑞 ping 我
  • java八股文笔记 - 指南
  • NOIP 模拟赛十六
  • 【AT_dp_y】Grid 2 - Harvey
  • C#十五天 026多态重写 027抽象类与开闭原则 028接口,依赖反转,单元测试
  • 解题报告-P11844 [USACO25FEB] Friendship Editing G
  • 两种判断计算机大小端模式的方法
  • CSP-S模拟23
  • CF1413F Roads and Ramen
  • 复现The Annotated Transformer代码时遇到的问题和相关链接
  • Node.js 文件上传中文文件名乱码难题,为什么只有Node会有乱码困难,其他后端框架少见?
  • ROS2之节点