2022-08-17 数位DP

概念

数位DP 是与数位相关的一类技术类DP,一般用于统计[l,r]区间满足特定条件的元素逇个数;
数位指的是个位、十位、百位、千位等;
数位DP就是在数位上进行动态规划
数位DP实质上是一种有策略的穷举方式,在子问题求解完毕后将其结果记忆化就可以了

如何枚举

枚举[0,386]区间所有数的时候,首先从百位开始枚举,百位可能是 0,1,2,3 枚举的时候不超过386 即可

1、百位0:十位 可以是 0 ~ 9,个位也可以是0 ~ 9,枚举没有限制,
因为百位是0之后,后面的位数无论是多少都不可能超过386,相当于枚举 000 ~ 099
2、百位1:十位可以枚举 0~9 个位也可以是0~9 枚举
     没有限制 枚举 100~199
3、百位2:同百位 1
    没有限制,枚举200 ~ 2999
 
  • 百位3 :
1、十位只可以是 0 ~ 8,否则的话超过了 386--此时是有上边界 限制的
2、当十位是0~7的时候,个位可以是0~9,因为379 < 386 ;
3、当十位是8的时候,个位只能是 0~6 此时是有上边界限制的 
如何枚举

image.png

数位DP需要注意的问题

  • 记忆化:
    无限制的时候,可以记忆化
    有限制的时候,不可以记忆化
  • 上限限制
    当高位枚举刚好达到上边界的时候,紧邻着的下一位枚举就有上界限制了,可以设置一个limit标记是否有上界限制
  • 高位枚举
    高位枚举0,
  • 前导0

你可能感兴趣的:(2022-08-17 数位DP)