数位dp

作者: A黄橙橙 | 来源:发表于2018-04-03 13:08 被阅读23次

数位dp的入门题
HDU - 2089 不要62
题意:求区间[n,m]之间,不含有4和(连续的)62的数字个数。
分析:emm就是一道数位dp的入门题嘛。

方法1:
dp[i][j]含义为 i位数,其中首位为j的,满足题意的数字个数。
初始条件 dp[0][0]=1;


递推式

其思想就是把这个数字拆开,从最高位开始,把满足条件的数字直接加上。
例如54321:我们知道了满足条件的小于10000的数字个数,那么[0,1e4],[1e4,2e4],[2e4,3e4],[3e4,4e4]中满足条件个数是相同的。
同理可向下推,好了我困死了,然后网上更多的好像是其他方法,emm挖坑X1,而且昨天又有一道数位dp的题emm挖坑X2;

其中,代码的这一段:

for(int i=len;i>=1;i--){
    for(int j=0;j<dig[i];j++){
        if(!(dig[i+1]==6&&j==2)){
             ans+=dp[i][j];
        }
    }
    if(dig[i]==4 || (dig[i+1]==6&&dig[i]==2)) break;
}

第一个if表示:如果原数字第i+1位是6,那么在第i位如果是2(j==2),那么ans+=0;
第二个if表示:如果原数字在第i位是4,或者 第i+1位是6,i位是2,那么接下来的数字不管怎么弄,都会在i位(4)或者i+1位(62)存在不要的数字,所以直接break;

相关文章

  • 数位dp

    数位dp的入门题HDU - 2089 不要62题意:求区间[n,m]之间,不含有4和(连续的)62的数字个数。分析...

  • 数位dp

    数位dp是解决一类选择有约束的数字的个数的问题的解法,就是数一个区间有多少个满足题目条件的数字的个数,通常暴...

  • 数位DP

    1. 计数问题 原题链接[https://www.acwing.com/problem/content/340/]...

  • DP训练——数位DP

    数位DP BZOJ1026题意求到间,不含前导零且相邻两个数字之差至少为的正整数的个数。题解状态定义:表示当前处理...

  • 【进阶】数位DP详解

    今天,我向大家介绍一种特殊的DP类型——数位DP。数位DP这类题目一般不会出现在提高组及以下的比赛中(今后出现了当...

  • 数位dp入门

    之前稍微看过一点数位dp, 也没怎么练习, 现在鸽了这么久差不多全忘了. 今天一个小学弟跑来问我一个很水的题 多个...

  • [数位dp] Pair

    输入正整数A,B,C,统计满足1≤x≤A,1≤y≤B且至少满足下列条件之一:①x and y > C②x xor ...

  • 数位DP 详解

    序 天堂在左,战士向右 引言 数位DP在竞赛中的出现几率极低,但是如果不会数位DP,一旦考到就只能暴力骗分。以下是...

  • 动态规划-数位Dp

    记录今天在Acwing学习的几道数位Dp题目,整理了思路,方便以后的复习: 1.度的数量 题目描述 求给定区间 [...

  • hihocoder1033(数位DP)

    总是有点似懂非懂的,本代码摘自http://www.tuicool.com/articles/mqUBFz 几个容...

网友评论

    本文标题:数位dp

    本文链接:https://www.haomeiwen.com/subject/nevqhftx.html