
动态规划-数位dp
文章平均质量分 78
FDU_Nan
去做一个会思考,善于思考的人儿。
展开
-
hdu 4722 Good Numbers(初涉数位dp)
http://acm.hdu.edu.cn/showproblem.php?pid=4722 大致题意:若一个整数的各位数字之和是10的倍数,称这个数为"good number"。给出区间[A,B],求出该区间内"good number"的数的个数。 第一道数位dp,折腾了半天才明白怎么回事。 设dp[site][mod]表示到第site位(由高位向低位)前面各位数字之和对1原创 2014-07-06 20:55:55 · 975 阅读 · 0 评论 -
LightOJ 1205 - Palindromic Numbers (数位dp)
http://www.lightoj.com/volume_showproblem.php?problem=1205 求[i,j]区间内回文数的个数。 为了使得处理到第pos位时,前面的状态是确定的,设置一个辅助数组num[ ]表示该回文数前mid位的数,根据前mid位数去确定后面的数。 这样题目就变得简单了,只需再确定了回文数的长度,然后进行记忆化。 dp[i][j]表示原创 2014-08-29 10:31:38 · 1413 阅读 · 0 评论 -
CF D. Beautiful numbers (数位dp)
http://codeforces.com/problemset/problem/55/D Beautiful Numbers : 这个数能整除它的所有位上非零整数。问[l,r]之间的Beautiful Numbers的个数。 若一个数能整除它的所有的非零数位,那么相当于它能整除个位数的最小公倍数。因此记忆化搜索中的参数除了len(当前位)和up(是否达到上界),有一个prel原创 2014-08-29 00:24:03 · 3478 阅读 · 0 评论 -
LightOJ 1032 - Fast Bit Calculations (数位dp)
http://www.lightoj.com/volume_showproblem.php?problem=1032 问0~N内所有数的二进制形式中出现的连续的'11'的个数的和。 与LightOJ 1140类似,都是对一个数内一些特征的数目计数,像一个数中'11'或'0'的个数和。 设dp[i][j]表示处理到第i位时'11'出现的次数。 不知道为什么数组开到dp[1原创 2014-08-28 19:39:41 · 1338 阅读 · 0 评论 -
LightOJ 1140 - How Many Zeroes? (数位dp)
http://www.lightoj.com/volume_showproblem.php?problem=1140 给出区间[m,n],求区间内的所有数共有多少个0。 设dp[i][j]表示处理到第i位时,它前面共有j个0(除了前导零)。 调试了半天,少些了一句 != -1。。 #include #include #include #include #in原创 2014-08-28 10:44:50 · 1595 阅读 · 0 评论 -
poj 3252 Round Numbers(数位dp)
http://poj.org/problem?id=3252 "Round Number "被称为其二进制形式中0的个数比1的个数多。求[x,y]区间内“Round Number”的个数。 计数的时候最重要的是处理前导零,前导零不算数,因此与SCOI2009一样,增加一个标记变量first,标志着当前这意味是不是首位,不是首位的话1和0的个数都为0,否则根据枚举的1或0进行记忆原创 2014-08-27 19:34:22 · 1009 阅读 · 0 评论 -
LightOJ 1068 Investigation (数位dp)
http://www.lightoj.com/volume_showproblem.php?problem=1068 求出区间[A,B]内能被K整除且各位数字之和也能被K整除的数的个数。(1 ≤ A ≤ B 31 and 0 ) 算是最简单的数位dp了,k在这里是10000,三维数组都开不开。但是想想会发现A,B最多有10位,各位数字之和不会超过90,那么当 k >= 90时,就不用d原创 2014-08-27 21:06:41 · 1370 阅读 · 0 评论 -
hdu 3709 Balanced Number(数位dp)
http://acm.hdu.edu.cn/showproblem.php?pid=3709 平衡数。枚举支点的位置,同时记录力臂。 dp[i][j][k]表示当前处理到第i个数,支点的位置是j,当前的力臂是k。因此判断某个数是否是平衡数,只需判断递归终点时力臂是否为0。 #include #include #include #include #include #i原创 2014-08-27 13:49:38 · 804 阅读 · 0 评论 -
简单的数位dp
hdu 2089 设dp[len][flag],flag = 1表示前一位是6,否则前一位不是6. #include #include #include #include #include #include #include #include #include #include #include #include #include #define LL __i原创 2014-08-27 10:50:56 · 1268 阅读 · 0 评论 -
hdu 3652 B-number(数位dp)
http://acm.hdu.edu.cn/showproblem.php?pid=3652 大致题意:"B-number"即一个整数含有子串"13"且被13整除。求1-n之间这样的数的个数。 思路:有两个限制条件:含有子串“13”和能被13整除。那么设dp[site][mod][flag],表示到第site位对13取余为mod且标记为flag的数的个数。flag表示是否含有子原创 2014-07-07 00:03:47 · 1188 阅读 · 0 评论 -
hdu 3886 Final Kichiku “Lanlanshu” (数位dp)
http://acm.hdu.edu.cn/showproblem.php?pid=3886 给出一个字符,只含'/','-' ,'\' ,表示着一个数上的各位数字按相应字符上升,不变或下降,问【a,b】区间内这样的数有多少个? 数组很好设,dp[i][j][k]表示处理到第i位,它对应的字符是第j位,它前面的数字是k的种类数。 令我纠结好久的是,我起初设的dp[i][j][原创 2014-08-29 21:30:38 · 1004 阅读 · 0 评论