数位DP
文章平均质量分 64
ElephantFlySong
这个作者很懒,什么都没留下…
展开
-
ural1057(数位DP)
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1057 在《浅谈数位统计类问题》中的例1有详细题解,这里对题解中一些不怎么容易理解的地方加一些注释。 对于二进制的情况: 这课假想的完全二叉树自上而下对应二进制数字的从高位到低位。 “右转时遇到的”是指从根节点进入右子树时序统计根节点的左子树上相应的路径的个数。 函数 int原创 2016-08-06 14:32:33 · 676 阅读 · 0 评论 -
HDU2089(数位DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 区间 [n, m] 中满足条件的个数等于[0, m]的个数减去[0, n-1]的个数。 怎么计算区间[0,n]中满足条件的个数呢? 预处理出数组 f[i][j],表示长度为 i 并且以 j 开头(可以有前导0)的不含数字 4 和 62 的数字的个数,其实可以说是区间[0, 10^i-1]中原创 2016-08-06 21:12:48 · 380 阅读 · 0 评论 -
HDU3652(数位DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652 看了数位DP的记忆化搜索的模板,拿这个题来练手。 先贴上数位dfs的模板: 首先要说的是又这么一个定理(其实我也不知道有没有这么一个定理,不过是正确的):假如一个3位的10进制的数x,它的各位数从高位到低位分别为x1、x2、x3,那么 x % k = ((x1 % k * 10 +原创 2016-08-08 19:43:51 · 302 阅读 · 0 评论 -
HDU3555
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 与HDU2089(不要62)相比,这道题是 “ 要49 ” ,比 “不要62” 的 dp[len][pre] 数组多了一个维度:dp[len][pre][exist]。 #include #include using namespace std; typedef unsigned l原创 2017-04-28 11:40:38 · 310 阅读 · 0 评论 -
HDU3709
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 ull dfs(int len, int piovt, int sum, bool limit),目前处理到第len位,第piovt 为支点,目前的和为sum,是否受到限制。 枚举每一位作为支点,累加 dfs(len, i, 0, true) #include #include原创 2017-04-29 12:51:23 · 321 阅读 · 0 评论 -
POJ3252
题目链接:http://poj.org/problem?id=3252 2进制的数位dp。 int dfs(int len, int num0, int num1, bool start, bool limit),已经处理到第len位,之前已经处理的那些状态中num0个0,、num1个1,是否已经出现1了,是否受到限制 注意不能有前导零。 #include #include #in原创 2017-04-29 14:05:16 · 329 阅读 · 0 评论