数位 DP 好题

题单介绍

## 数位 DP 简介 在我眼里,数位 DP 也就是一个有技巧的一个 DP,本质上其实也是 DP,或者说是计数?但是两者都需要考察选手对于数位的理解能力,尤其是“标记”的处理。 对此写了一个与数位 DP 相关的[专栏](https://www.luogu.com.cn/article/vyvrgzea),欢迎拜访。 ## 与数位相关的计数 不需要什么标记,只需要计数能力,而且几乎没有技巧,可以加深对于 $[0,m]$ 之间计数的理解。 - [P2602](/problem/P2602),应该是最经典的一道,有两种写法,其中一种就是 “计数” DP。 - [B3883](/problem/B3883),也许是第二典的一道,稍微推导还可以使用计数方式解决。 - [P2235](/problem/P2235),本质与上一道一样,但是需要转成二进制,说明了数位 DP 的多进制性。 - [P2518](/problem/P2518),一种更高阶的计数,需要分类讨论“位数小于”和“位数等于”的情况,理解了“位数等于”的情况应该就可以跳转下一章节了。 - [P3281](/problem/P3281),如果是式子做法需要推大量式子,一方面确实能提升计数能力,感兴趣可以做一做。 ## 与数位相关的 DP 这就需要考察选手对于标记的理解能力,具体来说就是从高位向低位 DP 的过程中维护一个标记表示“前面有没有卡满原数字”。这种 DP 一般使用记忆化搜索实现。 同样的,一些复杂的题目可能还需要对前导零处理。 但是这个标记在简单问题上是可以直接优化掉的,因为在标记存在的时候后面都是可以随便填写的了。 - [P2602](/problem/P2602),有记忆化搜索带标记写法,但是可能比计数方法要复杂,需要前导零标记,而且不仅要记录出现次数,还要记录符合条件的数字总数。 - [P8764](/problem/P8764),特别入门的题,不需要前导零标记,该维护的该维护即可。 - [P4999](/problem/P4999),与第一题类似。 - [P2657](/problem/P2657),记忆化搜索带标记典题,可以尝试独立思考,需要前导零标记。 - [P3413](/problem/P3413),方法和上一题是一样的,不过由“任意”转“存在”,可以再新增一个标记来处理。 - [P4124](/problem/P4124),本质也是多处理几个标记。 - [P6218](/problem/P6218),练手题。 - [AT_tdpc_number](/problem/AT_tdpc_number),练手题。 - [P9821](/problem/P9821),需要同时维护两个数字,本质不难。 - [P4317](/problem/P4317),一些东西无法同时求解出可以考虑拆分,和下面的 P4127 思想差不多。。 到这里基本就可以处理一些简单的数位 DP 了。 ## 提高与其他技巧应用 - [P7976](/problem/P7976),数位 DP 可以应用于 Lucas 定理。 - [P8688](/problem/P8688),上一题的加强,运用了一个优化,即直接计算出从其他状态转移的方案数。 - [P4127](/problem/P4127),需要枚举一开始不好维护的东西,这应该也是 DP 的一些基本技巧。 - [P3107](/problem/P3107),与上一题思想同。 - [P10959](/problem/P10959),上一题的加强版,不能用传统的记忆化实现了。 - [P1831](/problem/P1831),与上一题思想同。 - [P2106](/problem/P2106),和矩阵融合在了一起。 - [P5674](/problem/P5674),彻底的将数位 DP 与计数和数论融合了。 - [P6371](/problem/P6371),也是一个简单的 trick,经过根号处理后,其中一半就是数位 DP。 - [P9640](/problem/P9640),与背包结合。 - [CF1073E](/problem/CF1073E),和状态压缩结合,不需要技巧。 - [UVA12046](/problem/UVA12046),是下一题的简单版本。 - [CF55D](/problem/CF55D),需要大概使用哈希的技巧,大概就是把稀疏的状态“离散化”。 - [CF628D](/problem/CF628D),按照题意模拟即可,但是需要格外注意前导零的实现。 - [AT_abc317_f](/problem/AT_abc317_f),数位 DP 也可以应用与 Nim 游戏等 SG 函数与数位相关的博弈。 - [AT_abc138_f](/problem/AT_abc138_f),需要简单的推导转换。 - [P4067](/problem/P4067),很厉害的题,也是需要两个东西来维护答案和”数字总数“。 - [AT_arc133_d](/problem/AT_arc133_d),也是很厉害的题,需要分讨一堆。 - [P7717](/problem/P7717),与字典树的简单结合,思维难度较大。 - [P9129](/problem/P9129),与正常数位 DP 的标记不同,结合部分区间 DP,思维难度较大。 - [P9387](/problem/P9387),与上一题目类似,这道题目可以选择倒着 DP,这样就可以方便处理进位,是一个不错的拓展。 ## 总结 总结就是简单题都会做,复杂题就是一堆东西套一堆东西,所以就可以多刷几道练手。 这里的题目没有难的,因为难的题就要涉及到其他更复杂的东西(比如平面几何),也就只是纯数位 DP。 如果本人做到了或是随到了一些好的题目,也会加入其中,也欢迎各路数位 DP 大神推荐好题。

题目列表

  • [ZJOI2010] 数字计数
  • [信息与未来 2015] 求回文数(加强版)
  • [HNOI2002] Kathy函数
  • [HAOI2010] 计数
  • [SCOI2013] 数数
  • [蓝桥杯 2021 国 BC] 二进制问题
  • 烦人的数学作业
  • [SCOI2009] windy 数
  • SAC#1 - 萌数
  • [CQOI2016] 手机号码
  • [USACO06NOV] Round Numbers S
  • [ICPC2020 Shanghai R] Sum of Log
  • 花神的数论题
  • 「Stoi2033」园游会
  • [蓝桥杯 2019 省 A] 组合数问题
  • [AHOI2009] 同类分布
  • [USACO14OPEN] Odometer S
  • 月之谜
  • 杠杆数
  • Sam数
  • 「SWTR-2」Magical Gates
  • [COCI2006-2007#6] V
  • [SNCPC2019] Digit Mode
  • Segment Sum
  • Great Numbers
  • Beautiful numbers
  • Magic Numbers
  • [ABC317F] Nim
  • [ABC138F] Coincidence
  • [SDOI2016] 储能表
  • [ARC133D] Range XOR
  • 「EZEC-10」序列
  • [USACO23FEB] Piling Papers G
  • [THUPC 2023 决赛] 巧克力