zoukankan      html  css  js  c++  java
  • JZOJ 1039. 【SCOI2009】windy数

    题目

    Description

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

    Input

    两个整数,A B。

    Output

    一个整数,表示A~B中有多少个windy数。
     

    Sample Input

    1 10

    Sample Output

    9
     

    Data Constraint

     
     

    Hint

    100%的数据,满足 1 <= A <= B <= 2000000000 。

     

    分析

     

    • 数位DP板子题

    代码

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cmath>
     4 using namespace std;
     5 int e[10001],cnt;
     6 long long f[12][12][2][2];
     7 long long dp(int pos,int pre,bool zero,bool lim)
     8 {
     9     if (pos<1) return 1;
    10     if (f[pos][pre][zero][lim]!=-1) return f[pos][pre][zero][lim];
    11     int end=lim?e[pos]:9;
    12     int ans=0;
    13     for (int i=0;i<=end;i++)
    14     {
    15         if (abs(i-pre)>=2||zero)
    16         {
    17             ans+=dp(pos-1,i,zero&&(i==0),lim&&(i==end));
    18         }
    19     }
    20     return f[pos][pre][zero][lim]=ans;
    21 }
    22 long long calc(int x)
    23 {
    24     memset(f,-1,sizeof(f));
    25     memset(e,0,sizeof(e));
    26     cnt=0;
    27     while (x) e[++cnt]=x%10,x/=10;
    28     return dp(cnt,0,1,1);
    29 }
    30 int main ()
    31 {
    32     int a,b;
    33     cin>>a>>b;
    34     cout<<calc(b)-calc(a-1);
    35 } 
    为何要逼自己长大,去闯不该闯的荒唐
  • 相关阅读:
    [转载]要死的人都后悔些什么
    mysql优化之explain备忘笔记
    memcached 命令操作详解
    linux netstat 命令详解
    linux awk 命令详解
    定时任务FluentScheduler 学习笔记 .net
    webAPI文件上传时文件过大404错误的问题
    用递归形成树结构数据
    webAPP 图片上传
    webAPP踩坑记录
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/11330411.html
Copyright © 2011-2022 走看看