不要62

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 26743    Accepted Submission(s): 9385

Problem Description
杭州人称那些傻乎乎粘嗒嗒的人为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

  数位DP最基础的题目。。
  
  首先我们设数组f[i][j]代表第i位是j有f[i][j]种情况。
  
  然后我们用预处理出10位以下的f[i][j].
  
  转移大约是f[i][j]=f[i-1][k](k!=4&&j!=4&&!(j==6&&k==2))
  
  然后求出这个以后,我们可以认为答案=1-R之间的数字个数-1-L之间的数字个数
  
  大约是对于一个数字,先把它存入一个数组
  
  然后对于最高位,可以是0-num[len].
  
  这里分三种情况:
    1.是0的情况,这是我们推向更低位。
    2.是num[len],我们也推向更低位。
    3.其他情况直接加f数组。
  
  对于1情况,我们直接把len-1到1的位数的每一位设为1-9然后加上f[i][j].这样处理完了所有位的所有情况。
  
  对于2情况,就是下一位的3种情况和。
  
  3情况不用说。  
  注意考虑合法情况。
  

 #include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> using namespace std; int f[][]; void DP()
{
for(int i=;i<=;i++)
if(i!=)f[][i]=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(j!=)
for(int kk=;kk<=;kk++)
if(kk!=&&!(j==&&kk==))
f[i][j]+=f[i-][kk];
} int get(int x)
{
int num[],len=,res=;
while(x)
{
num[++len]=x%;
x/=;
}
for(int i=;i<num[len];i++)
res+=f[len][i];
for(int i=;i<=len-;i++)
for(int j=;j<=;j++)
res+=f[i][j];
if(num[len]==)return res;
for(int i=len-;i>=;i--)
{
for(int j=;j<num[i];j++)
{
if(j== || (j== && num[i+]==) )continue;
res+=f[i][j];
}
if(num[i]== || (num[i+]== && num[i]==) )break;
}
return res;
} int main()
{
DP();
int l,r,num,snum,ans=;
while()
{
scanf("%d%d",&l,&r);
if(!(l&&r))break;
printf("%d\n",get(r+)-get(l));
}
return ;
}
  

【数位DP】Hdu 2089:不要62的更多相关文章

  1. 数位DP HDU - 2089 不要62

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. 2019年9月训练(壹)数位DP (HDU 2089)

    开学之后完全没时间写博客.... HDU 2089 不要62(vjudge) 数位DP 思路: 题目给出区间[n,m] ,找出不含4或62的数的个数 用一个简单的差分:先求0~m+1的个数,再减去0~ ...

  3. Hdu 2089 不要62 (数位dp入门题目)

    题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...

  4. 数位dp入门 hdu2089 不要62

    数位dp入门 hdu2089 不要62 题意: 给定一个区间[n,m] (0< n ≤ m<1000000),找出不含4和'62'的数的个数 (ps:开始以为直接暴力可以..貌似可以,但是 ...

  5. HDU 2089 - 不要62 - [数位DP][入门题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  6. HDU 2089 不要62(数位dp模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...

  7. [hdu 2089] 不要62 数位dp|dfs 入门

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位d ...

  8. HDU 2089 不要62 数位DP模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...

  9. hdu 2089 不要62【数位dp】

    HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...

  10. HDU 2089 不要62(数位dp入门)

    题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 题解:这是数位DP的入门题了,首先要理解数DP的原理,DP[i][j]:代表第i位的第j值,举个栗子:如4715   数位数是从右向 ...

随机推荐

  1. jQuery选择器容易忽视的小知识大问题

    1 关于检查某个元素在网页上的存在 很多人会惯性的写成  } 其实应该根据获取到元素的长度来判断 if($("#tt").length>0){ //do something博 ...

  2. Tomcat - 设置 HTTP 摘要认证

    在 Tomcat 中设置 HTTP 摘要认证的示例 在 Tomcat 中设置摘要认证与设置基本认证几乎一样,差别在于配置 web.xml 时,<login-config/> 元素在指定认证 ...

  3. response小结(二)——文件下载

    我们先来看一个最简单的文件下载的例子: package com.yyz.response; import java.io.FileInputStream; import java.io.IOExcep ...

  4. 如何把网站及数据库部署到Windows Azure

    http://edi.wang/Post/2014/1/1/deploying-website-with-db-to-azure-custom-domain

  5. 利用TCP 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈

    首先盲写的一个传输文件的方法,但测试发现了一个非常不容易发现的问题,这里先说明一下. 错误的代码如下: package com.TCP.java; import java.io.File; impor ...

  6. mysql优化之定位问题

    首先先介绍几个关键字 1  show status 表示数据库当前的状态数据 show [session|global] status  session是当前连接的统计结果   global 是数据库 ...

  7. Easyui 生成layout

    Easyui 生成layout var $tabs; var $body; var $south; function appendLayout(title, href) { if (!$body) $ ...

  8. jQuery阻止冒泡和HTML默认操作

    1:jQuery是一个快捷简便的JavaScript框架,说道框架可以直接理解为就是对原来底层的东西进行了封装使得开发者能够利用这个框架快速开发. 2:在当今的各个浏览器中都支持事件的冒泡,所谓的冒泡 ...

  9. VB.Net 字符串加密类

    Public Class Cls_JM '使用 'Dim Jm As New Cls_JM(2) 'Dim strTmp As String 'Jm.jiemi(strTmp) 'Jm.Jiami(s ...

  10. C++程序员笔试复习概要(一)

    第8章     类和对象的创建 [内容提要] 类和对象 构造函数和析构函数 对象数组与对象指针 静态成员 友元 静态函数 虚函数 [重点与难点] 8.1 类和对象 8.1.1 类的定义 类实质上是用户 ...