首页 > 其他分享 >【学习笔记】数位dp简记

【学习笔记】数位dp简记

时间:2022-12-17 14:23:18浏览次数:53  
标签:满足条件 int text 简记 例题 dp 数位

数位 \(\text{dp}\) 简记

给出一些条件,求某一区间内,满足条件的数的个数;或者是定义一个函数,求某一区间内,函数值的和或积。
数位 \(\text{dp}\) 大多数的限制条件与各位数之和、整除、是否出现、相邻相等有关。
简单记一下有价值的东西。

常规记忆化搜索调用参数

  • int len 当前位数
  • int pre 上一位数字
  • bool lead 有无前导 \(0\)
  • bool limit 是否卡上界
  • int cnt 统计出现次数
  • bool chk 标记是否已经满足条件
  • int mod 计算带余除以某个数的值

复杂度大致是所有参数取值范围大小乘在一起,只有卡上界的会一直搜,而卡上界的一定是一条链。

二进制

例题:花神的数论题
二进制记忆化搜索有些大材小用,并且这道题是计算函数的积,可以当做一个计数题来做,容易得到实际是求出每个值作为 \(sum\) 的出现次数。
实际上是运用了数位 \(\text{dp}\) 的思想,考虑当前这一位卡不卡上界,不卡上界一定可以直接算出来,卡上界就递归下去,处理边界情况可能边界麻烦。

整除减少状态数

例题:haha数
可以 \(2^{8}\) 状态压一下出现的数,对于整除情况单个讨论一下,\(2,4,8\) 只需要记录下 \(\bmod 8\) 的余数,\(3,9\) 同理,而 \(7\) 需要单独记录,\(6\) 只要满足 \(2,3\) 的条件即可,最后 \(5\) 在最后一位判断。这样状态数就减少很多。
(一般在只需要知道是否属于一个集合时,将状态选取为 \(0/1\))

非常规 \(\text{bfs}\)

例题:苍与红的试炼
要求最小所以不能无脑搜,需要 \(\text{bfs}\)。
传参一定是关于整体 \(\bmod d\) 的值以及各位数的和,而参数相同的两个数,在最后加同样的东西都可以达成的情况下,先出现的一定更优,也算是一种优化方式。

不求满足条件数的个数,而是满足条件的位置或者连续段个数

例题:数字计数
已经算是一道计数题了。
记忆化搜索两个答案,方案数以及答案,这样可以统计当前枚举位的贡献以及剩下位置的总答案,不需要计算组合数。

标签:满足条件,int,text,简记,例题,dp,数位
From: https://www.cnblogs.com/SoyTony/p/Brief_Notes_about_Digit_dp.html

相关文章

  • 微信小程序报错“getLocation:fail the api need to be declared in the requiredPriv
    解决微信小程序获取定位报错上个礼拜在调试一个微信小程序的时候,在手机允许小程序获取定位、定位授权成功的情况下,发现安卓手机能获取定位,但是苹果手机获取不到定位,我就开......
  • SharedPreferences对数据的存储
    SharedPreferences简介:                                     它的本质是基于XML文件存储key-......
  • difference between send() and sendTo() in C for a UDP network implementation
    Thesendtofunctionistheonethat'sgenerallyusedforUDPsockets.AsUDPisconnectionless,thisfunctionallowsyoutospecifytheIPandportthateach......
  • DDPM+DDIM总结
    \(\color{red}{注:以下只是个人总结,由于水平有限,基本是参考文献中的原文,感兴趣请看原文。}\)1.论文相关论文目录:DDPMDenoisingDiffusionProbabilisticModelsEMA......
  • DDPM+DDIM总结
    \(\color{red}{注:以下只是个人总结,由于水平有限,基本是参考文献中的原文,感兴趣请看原文。}\)1.论文相关论文目录:DDPMDenoisingDiffusionProbabilisticModelsEMA......
  • [dp记录]P3354 Riv
    看到有人求多维dp妙题就想起此题,于是干脆来记录一下。神仙dp,首先看着就很树上背包,但是,部分木头可能从当前节点继续下流,最关键的是:我们还无法确认它们有多少。所以两维......
  • 强化学习调参技巧二:DDPG、TD3、SAC算法为例:
    1.训练环境如何正确编写强化学习里的env.reset()env.step()就是训练环境。其编写流程如下:1.1初始阶段:先写一个简化版的训练环境。把任务难度降到最低,确保一定能正常......
  • 正则表达式匹配所有数字,包括带小数点的数字 包含限制小数位数、整数位数
    1varreg1=/^[+-]?(0|([1-9]\d*))(\.\d+)?$/;//不限制小数位数23varreg2=/^[+-]?((\d*(\.\d{1,})$)|(\d+$))/;//可限制小数位数{1,}小数时,必须1位以......
  • wordpress---wp_query的使用方法
    wp_query是一个wordpress用于复杂请求的的一个类,看到query懂开发的人就会反应这个是数据库查询的一个类,这个类可谓是非常有用的,可以帮助我们做很多复杂的查询。wp_query的......
  • dremio CommandPool简单说明
    CommandPool实际上是一个线程池的处理,官方实现了好几种线程池主要作用限制并行请求以以及job的运行定义优先级任务特点任务基于优先级以及提交时间进行自然排序......