整理:数位DP
关于数位DP的整理
1.什么时候用数位DP解题?
\(OI\ Wiki\):
数位 DP:用来解决一类特定问题,这种问题比较好辨认,一般具有这几个特征:
- 要求统计满足一定条件的数的数量(即,最终目的为计数);
- 这些条件经过转化后可以使用「数位」的思想去理解和判断;
- 输入会提供一个数字区间(有时也只提供上界)来作为统计的限制;
- 上界很大(比如 \(10^{18}\)),暴力枚举验证会超时。
2.数位DP的不同题型
1.计数类
求区间内满足的某一条件数有多少.
而根据条件,我们可以将这类题目再进一步细分
1.含有某一具体数字/子串
这一类属于数位DP的入门题,难度较低
解法就是直接在状态中写入前面几位的数字,在决策时判断即可
2.能被某些数字整除/余数为特定值
同样也比较简单.
如果是被某一特定数字整除,我们只需要记录除以此数后的余数,然后在每一位决策时维护余数即可
如果是被数位和整除,我们发现, \([1,9]\) 的余数组成的九元组可以与 \(2520\) 的余数集一一对应,那么久转换成立被某一特定数字整除的情况
3.给定一个函数 \(f\),要求函数值 \(f(x)\) 满足某一条件
这种题的难度与函数本身密切相关.
比如这题F(x),由于本身函数十分简单,所以这道题十分水
但是这题 Kathy函数,由于函数极为无厘头,导致这题十分难
4.一些奇奇怪怪的条件
难度视条件而定
2.求和类
包括但不限于求数字和,求平方和.
只需要将返回类型变成结构体,然后进行相应的运算即可
3.与其他算法结合得到的BT题目
XHXJ's LIS:DP套DP
淘金:数位DP+带反悔的贪心

浙公网安备 33010602011771号