不要62 HDU - 2089 (数位dp解法)

题意:

题目链接:https://vjudge.net/problem/HDU-2089

给你一个区间[ l, r ],让你输出在该区间中满足以下两个条件的数有多少个,条件一:数字的每一位不能出现4,条件二:数字的连续两位不可以是 62 。

解题思路:

由于这个题目的数据比较弱,预处理下直接输出。假设这个题目的范围变成 : (1 <= l <= R <= 1e18) 就不可以暴力了。这时候数位dp就会展示其强大之处。

具体参照代码,类似就是个模板了。写这个题解就是记录个模板,方便以后查看、理解、复习。主要谈了下limit。

AC代码:

#include
#define up(i, x, y) for(ll i = x; i <= y; i++)
#define down(i, x, y) for(ll i = x; i >= y; i--)
#define bug prllf("*********\n")
#define debug(x) cout<<#x"=["<

 

你可能感兴趣的:(ACM,动态规划)