数位DP 总结

来源:互联网 发布:消费者联盟是淘宝客吗 编辑:程序博客网 时间:2024/04/30 00:57

数位dp适合在一段数的区间内找出满足某些条件的数的个数,这个时候往往不能之间遍历,肯定会超时,则一般使用数位dp来解决。

数位dp的常见形式是dp[i][j],表示开头是j的i位数满足条件的有多少个,当然也有其他dp[i][j][k]等等,但i,j,k都很小,不会像直接遍历那么耗时。

以前做过一个不要62的题(HDU2089),当时没用数位,直接枚举也过了。
还有一个比较简单的是HDU3555,就是统计一个区间内带49的数的个数。
像这种基础的数位dp,基本上都是找出第i位与i-1位的关系,这两个题中的关系很明显。算是数位dp的入门题。

然后比较难一些的数位题,一般都要同余定理。比如说HDU3652。大致题意就是,在一个区间内找出有多少含有13并且能被13整除的数的个数。前面那种题,一般前一位都和后一位有明显的关系,比如说第i位为 6 那么第i-1位就不能是2。
但是这个题要找出,能被13整除的,能不能被13整除是一个整体的性质,在我们不知道确切数的时候想要得到余数,就要用到上一个状态的余数。再配合DFS得到结果。

1 0
原创粉丝点击