数位DP
文章平均质量分 72
huolongshenghu
这个作者很懒,什么都没留下…
展开
-
hdu 3652 B-number (数位DP)
题意:找出小于n且是13的倍数,并且包含'13'的数思路:设状态dp[a][b][c][d]位数为a,模13的余数为b,c表示是否含有13 (c==1表示有,c==0表示无),d表示上一位的数字,最前面为0. 则可以看出转移状态为 if c==1 {dp[a][b][c][d]+=dp[a-1][(b*10+x)%13][1][x]; (0=if(d==1&&x=原创 2013-10-18 20:47:44 · 1039 阅读 · 0 评论 -
poj 3252 Round Numbers (数位DP)
题意:给你两个十进制数n,m,求n,m在二进制情况下(n,m)区间中数字0比数字1个数多的二进制数有多少个。思路:数位DP。 设DP[a][b][c]a位数,开头为b,含有c个1的数的个数。 转移方程:if(b==1){dp[a][b][c]+=dp[a-1][z][c-1] (0}else{dp[a][b][c]+=dp[a-1][z][c原创 2013-10-19 22:41:48 · 592 阅读 · 0 评论 -
poj 3286 How many 0's? (数位DP+ 统计)
题意 :计算 m到n区间中的数一共包含了多少个0.思路:定义DP状态dp[a][b][c]表示a位数,开头为b ,含有c个0的数的个数。转移状态:if(b>=1)dp[a][b][c]+=dp[a-1][z][c] (0=else dp[a][b][c]+=dp[a-1][z][c-1] (0=对数字进行DP预处理,然后对于每个低于n或m的数字进行去原创 2013-10-20 20:42:42 · 1046 阅读 · 0 评论 -
hdu 4734 F(x) (2013成都网络赛G题)(数位DP)
题意:定义一个权重: F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1.(AnAn-1An-2 ... A2A1是组成A的各个位),然后问你0到B 区间内的数的权重小于等于A的权重的数有多少个。思路:刚开始先算了一下 999999999的权重为4599,所以用数组可以存下,则定义状态dp[a][b][c]表示位数为a,开头原创 2013-10-21 20:41:34 · 864 阅读 · 0 评论 -
数位DP小结
一般情况[n,m]区间中满足一定条件的数的个数有多少个,都可以采用数位DP的思想。DP定义一般式为DP[i,st] i为位数,而ST为状态数,根据实际情况而定。转移方程一般为dp[i,st]=dp[i-1,st']。这为一般的形式。根据不同题目,对于一些情况进行特殊处理。原创 2013-10-21 20:51:21 · 735 阅读 · 0 评论 -
hdu 3555 Bomb (数位DP)
题意:给你一个数n,找出小于n且不包含'49'的数的个数题目:http://acm.hdu.edu.cn/showproblem.php?pid=3555思路:dp[a][b][c]表示位数为a,开头为b,且是否包含49为c的数的个数(c==1表示包含49,反之不包含)状态转移方程为:if c==1{dp[i][j][1]+=dp[i-1][k][1]; (0=原创 2013-10-18 21:24:33 · 676 阅读 · 0 评论 -
hdu 2089 不要62 (数位DP)
题意:给定一个区间[n,m],求n到m中没有“62”和“4”的数的个数。其中例如62548 ,412包含62 和4 所以是不合法的。http://acm.hdu.edu.cn/showproblem.php?pid=2089思路:设dp[i][j]表示i位数且开头为j的数中不包含“4”和“62"的数的个数,则可以得出dp[i][j]=dp[i][j]+dp[i-1][k],(0=代码如下:原创 2013-10-17 20:57:15 · 716 阅读 · 0 评论