zoukankan      html  css  js  c++  java
  • 数位DP

    不要62
    杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 
    杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 
    不吉利的数字为所有含有4或62的号码。例如: 
    62315 73418 88914 
    都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。 
    你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。 

    Input

    输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。 
    Output

    对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。 
    Sample Input

    1 100
    0 0

    Sample Output

    80

    给你n到m的数,如果出现4还有连续62就是不吉利的号,要进行跳过。这个题暴力完全是可以过的,但他是数位DP的模板题,我可以直接统计每个区间的值,使用dp数组去0,用dp[i][j] 表示滴i个数时以j结尾所应该统计的个数

    #include <stdio.h>
    int dp[10][3];
    void inti()
    {
        int i;
        dp[0][0]=1;
        for(i=1;i<10;i++)
        {
            dp[i][0]=dp[i-1][0]*9-dp[i-1][1];
            dp[i][1]=dp[i-1][0];
            dp[i][2]=dp[i-1][2]*10+dp[i-1][0]+dp[i-1][1];
        }
    }
    int solve(int x)
    {
        int i,k,f,ans,t=x;
        int a[20]={0};
        k=0;
        while(x)
        {
            a[++k]=x%10;
            x/=10;
        }
        ans=f=0;
        for(i=k;i>0;i--)
        {
            ans+=a[i]*dp[i-1][2];
            if(f)
                ans+=a[i]*dp[i-1][0];
            else
            {
                if(a[i]>4)
                    ans+=dp[i-1][0];
                if(a[i]>6)
                    ans+=dp[i-1][1];
                if(a[i+1]==6&&a[i]>2)
                    ans+=dp[i][1];
            }
            if(a[i]==4||(a[i+1]==6&&a[i]==2))
                f=1;
        }
        return t-ans;
    }
    int main()
    {
        int a,b;
        inti();
        while(scanf("%d%d",&a,&b),a||b)
        {
            printf("%d
    ",solve(b+1)-solve(a));
        }
        return 0;
    }
  • 相关阅读:
    ACM——Points on Cycle
    ACM——A Simple Problem with Integers(线段树的精华版)
    HDU2524——矩形A+B
    ACM——Hero(类似贪心算法)
    用N个三角形最多可以把平面分成几个区域——acm
    ACM——敌兵布阵(经典的线段树)
    ACM——I Hate It(线段树的进化版)
    ACM——今年暑假不AC
    ACM题目Who's in the Middle
    内部排序算法
  • 原文地址:https://www.cnblogs.com/BobHuang/p/6924796.html
Copyright © 2011-2022 走看看