题目

题目描述

杭州人称那些傻乎乎粘嗒嗒的人为 62(音:laoer)。

杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。

不吉利的数字为所有含有 4 或 62 的号码。例如:62315 73418 88914 都属于不吉利号码。但是,61152 虽然含有 6 和 2,但不是 62 连号,所以不属于不吉利数字之列。

你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。

输入格式

输入一行,一个空格隔开的两个整数 n 和 m(0<n≤m<100000000)。

输出格式

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

样例数据 1

输入  [复制]

1 100

输出

80

题解:

数位DP裸题,注意记忆化DFS,pos表示搜索到的位置,pre表示搜索到的该位置前枚举的数,limit表示pre是否已经到达最大值

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[15][15][2],bit[15],len;
inline void trans(int x)
{memset(dp,-1,sizeof(dp));memset(bit,0,sizeof(bit));len=0;int temp=x;while(temp){len++;temp/=10;}temp=x;for(int i=len;i>=1;i--){  bit[i]=temp%10;temp/=10;}
}
inline int Dfs(int pos,int pre,bool ifend)
{if(pos==len+1)  return 1;if(dp[pos][pre][ifend]!=-1)  return dp[pos][pre][ifend];int end;end=(ifend?bit[pos]:9);int ans=0;for(int i=0;i<=end;i++){if((pre==6&&i==2)||i==4)  continue;  ans+=Dfs(pos+1,i,ifend&&i==end);}return dp[pos][pre][ifend]=ans;
}
int main()
{//freopen("a.in","r",stdin);int n,m;scanf("%d%d",&n,&m);trans(n-1);int temp1=Dfs(1,0,1);trans(m);int temp2=Dfs(1,0,1);cout<<temp2-temp1<<endl;return 0;
}

转载于:https://www.cnblogs.com/AseanA/p/7230420.html

算法复习——数位dp(不要62HUD2089)相关推荐

  1. 【算法小讲堂】数位dp(简单入门)

    数位打牌 爷爷,你没有关注的博主又更新博客啦!! 数位dp(打牌),这是一个相当深刻并且具有意义的话题.在没看懂这个内容的时候完完全全就是一脸懵逼,现在依旧是一脸懵逼.你以为你会了,题目:不,你不会! ...

  2. 算法学习之路|数位dp简要分析

    数位dp一般用于处理一些和数位有关的计数问题,比如说求区间[l,r]中有多少符合条件的数,而为了减少时间复杂度,方法使用的是动态规划的思想. 举例说明:问从0到2345这些数中总共包含多少6. 数位d ...

  3. bzoj 1026: [SCOI2009]windy数 数位DP算法笔记

    数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...

  4. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  5. 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)

    题意简介 没什么好说,就是让你求出 1 ~ n 之间每个数转化为二进制后 '1' 的个数,然后乘起来输出积 题目分析 emmmm.... 两种解法(同是 $O(\log^2 N)$ 的算法,组合数效率 ...

  6. HDU 2089 不要62 数位DP

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2089 题目描述: 给定一个区间, 让你求这个区间中所有不带62 或 4 的数的个数 解题思路: 很明 ...

  7. (待完成)qbxt2019.05 总结2 - 数位DP

    数位 DP 严格来说其实并不是 DP--它只是个单纯的计数问题 但是怎么说呢--现在大家似乎都把数位 DP 叫这个名字,所以--我们还是--叫它 DP 额什么是数位 DP 呢? 一句话概括--一类求在 ...

  8. UVA - 11361 Investigating Div-Sum Property(数位dp/记忆化搜索板子)

    题目:https://vjudge.net/problem/UVA-11361 思路:数位dp,用记忆化搜索写,dp[pos][i][j][limit] 代表剩余有pos位,每位上的数字和模k 等于i ...

  9. HDU 3555 Bomb (数位DP)

    数位dp,主要用来解决统计满足某类特殊关系或有某些特点的区间内的数的个数,它是按位来进行计数统计的,可以保存子状态,速度较快.数位dp做多了后,套路基本上都差不多,关键把要保存的状态给抽象出来,保存下 ...

最新文章

  1. hdu 1811 Rank of Tetris (并查集+拓扑排序)
  2. spring aop 申明了切面类之后,如何申明切入点呢?
  3. 不同的二叉搜索树-战胜100%的Java用户
  4. git管理和自动部署项目
  5. JSP显示错误信息中四个范围来保存变量
  6. 一个方法可解决两个问题:1:Unity打开时一直加载,不能NEW,只能OPEN; 2:Unity 出现license error,re-active时一直循环报错
  7. 北漂程序员边城的幸福生活
  8. X210串口配置与stdio移植
  9. 转:绝对干货--WordPress自定义查询wp_query所有参数详细注释
  10. Ubuntu 16.04 火狐添加java插件、解决Firefox强制低版本java插件运行以及安全设置限制自签名应用程序运行
  11. springBoot事物
  12. 软考网络工程师--数据通信基础
  13. [swift 进阶]读书笔记-第一章:介绍、第二章(C2P2):第二章:内建集合类型
  14. tcpdump 在ubuntu上使用命令学习笔记 /tcp、ip、icmp数据包格式
  15. Flink 如何管理 Kafka 消费位点
  16. Linux网卡驱动分析
  17. 这2个PDF转Word免费不限页数工具很多人没用过
  18. hihoCoder1378:网络流二·最大流最小割定理
  19. 爬虫入门 手写一个Java爬虫
  20. 城市云脑研究之三,人工智能在城市云脑建设中的地位与作用

热门文章

  1. python 使窗口前置
  2. 江苏计算机二级vb,江苏省计算机等级考试二级vb.ppt
  3. freebsd mysql5.7_FreeBSD 环境下Mysql问题解决方法集锦
  4. java 改变文件权限_Java文件权限
  5. swift可选类型_Swift可选
  6. struts2路径配置_Struts 2结果路径配置示例
  7. jsf tree组件_JSF文本组件–标签,文本字段,文本区域和密码
  8. 从0开始构建自己的前端知识体系-JS-事件-键盘事件总结
  9. 2016年最酷的十大安全初创公司
  10. java多线程总结一:线程的两种创建方式及比较