zoukankan      html  css  js  c++  java
  • BZOJ1026 SCOI2009 windy数 【数位DP】

    BZOJ1026 SCOI2009 windy数


    Description

      windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?

    Input

      包含两个整数,A B。

    Output

      一个整数

    Sample Input

    【输入样例一】
    1 10
    【输入样例二】
    25 50

    Sample Output

    【输出样例一】
    9
    【输出样例二】
    20

    HINT

    【数据规模和约定】
    100%的数据,满足 1 <= A <= B <= 2000000000 。



    #include<bits/stdc++.h>
    using namespace std;
    #define LL long long
    LL dp[12][10][2][2];
    LL p[12];
    LL dfs(LL pos,LL las,LL up,LL front){
        if(!pos){
            if(front)return 0;
            else return 1;
        }
        if(dp[pos][las][up][front])return dp[pos][las][up][front];
        LL ans=0;
        LL tmp=up?p[pos]:9;
        for(LL i=0;i<=tmp;i++)
            if(front||abs(i-las)>=2)
                ans+=dfs(pos-1,i,i==tmp&&up,front&&i==0);
        return dp[pos][las][up][front]=ans;
    }
    LL work(LL a){
        memset(dp,0,sizeof(dp));
        LL len=0;
        while(a){
            p[++len]=a%10;
            a/=10;
        }
        return dfs(len,0,1,1);
    }
    int main(){
        LL a,b;
        scanf("%lld%lld",&a,&b);
        printf("%lld",work(b)-work(a-1));
        return 0;
    }
  • 相关阅读:
    多数据源配置
    Oracle创建JOB
    2新建Data Adapter
    注解的CRUD;重点:多对一和一对多处理
    Mybatis分页+使用注解开发!
    继续mybatis配置resultMap;讲解日志部分
    Today has a day off.
    Mybatis其他配置!
    Mybatis优化配置!
    Mybatis的CRUD
  • 原文地址:https://www.cnblogs.com/dream-maker-yk/p/9676344.html
Copyright © 2011-2022 走看看