题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089

参考博客:https://www.cnblogs.com/HDUjackyan/p/9142156.html

说明,上面这篇博客已经可以很清楚地理解这道题目所表现得意思了。我这里是上述博客中的第一题。

这道题目呢我目前已经知道怎么做了,但是我还不能很好地做到用文字表述出来,所以大家可以试着看看我的代码,我也是通过看上面那篇博客的代码理解数位DP的思想的。

我在上面博客的代码中做了一些精简,省略了一个多余的状态参数,代码如下:

#include <iostream>
#include <cstring>
using namespace std; int a[20], dp[20][2]; /*
pos表示目前将要访问的位置
pre表示前一个值是不是6,因为这里涉及到62连数,所以我们在访问到后一位的时候要考虑前一位,这里pre就用于存储前一位
limit表示是不是在边界位置
*/
int dfs(int pos, int stat, bool limit) {
if (pos == -1) return 1;
if (!limit && dp[pos][stat] != -1) return dp[pos][stat];
int up = limit ? a[pos] : 9;
int tmp = 0;
for (int i = 0; i <= up; i ++) {
if (stat && i == 2) continue;
if (i == 4) continue;
tmp += dfs(pos-1, i==6, limit&&i==a[pos]);
}
if (!limit) dp[pos][stat] = tmp;
return tmp;
} int solve(int x) {
int pos = 0;
while (x) {
a[pos++] = x % 10;
x /= 10;
}
return dfs(pos-1, 0, true);
} int main() {
int l, r;
while ((cin >> l >> r) && l+r) {
memset(dp, -1, sizeof(dp));
cout << solve(r) - solve(l-1) << endl;
}
return 0;
}

其中,

  • pos表示目前将要访问的位置
  • pre表示前一个值是不是6,因为这里涉及到62连数,所以我们在访问到后一位的时候要考虑前一位,这里pre就用于存储前一位
  • limit表示是不是在边界位置

学习链接:

HDU 2089 不要62 数位DP模板题的更多相关文章

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

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

  2. hdu 2089 不要62 (数位dp基础题)

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

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

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

  4. HDU 2089 不要62(数位DP&#183;记忆化搜索)

    题意  中文 最基础的数位DP  这题好像也能够直接暴力来做   令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ dp[ ...

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

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

  6. hdu 2089 不要62 数位dp

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

  7. hdu 2089不要62 (数位dp)

    Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来 ...

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

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

  9. HDU 3555 Bomb(数位DP模板啊两种形式)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 Problem Description The counter-terrorists found ...

随机推荐

  1. SpringMVC的拦截器和数据校验

    SpringMVC拦截器 什么是拦截器:Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以 ...

  2. Acwing P283 多边形 题解

    Analysis 总体来说是一个区间DP 此题首先是一个环,要你进行删边操作,剩下的在经过运算得到一个最大值 注意事项: 1.删去一条边,剩下的构成一条线,相当于求此的最大值,经典区间DP该有的样子: ...

  3. Processing 2.1.1 无法使用video和movie问题解决方案

    升级到2.1.1后,尝试着运行了一下sample中的video和movie,结果都报错,上网搜了一下,找到解决方法. 1. 首先来看movie的错误,如下: JNA: Callback org.gst ...

  4. 11、spark内核架构剖析与宽窄依赖

    一.内核剖析 1.内核模块 1.Application 2.spark-submit 3.Driver 4.SparkContext 5.Master 6.Worker 7.Executor 8.Jo ...

  5. [Noip2018普及]摆渡车

    生涯回忆录彻底摸了...反正也没啥人看( 过几天要给普及组神犇讲课就寻思做一点普及题,然后差点被锤爆,, 题在luogu上找的https://www.luogu.org/problemnew/show ...

  6. (3)Angular的开发

    Angular CLI是一个命令行界面工具 创建项目.添加文件以及执行一大堆开发任务,比如测试.打包和发布 Angular CLI 功能与常用参数 使用Angular CLI 高效构建angular ...

  7. fuck-KUNLUN昆仑ECRS会员管理系统

    写代码要认证一点,多一点测试, navigator.appName == 'Netscape'这么垃圾的代码都能写出来,握草. 怕时间就了就忘记怎么搞的了,MD经过前端各种断点,找到了这个垃圾玩意儿. ...

  8. ROS里程计

    gmapping导航建图包里建图需要里程计信息,且导航也需要. 整个移动机器人的控制结构如下图所示,其中base_controller节点将订阅的cmd_vel信息通过串口或其它通信接口发送给下位机( ...

  9. 1、vueJs基础知识01

    vue是框架,vue.js是vue框架的核心js库 库:是一个封装好的特定的方法的集合,提供给开发者使用,库没有控制权,控制权在使用者手中.代表:jQuery.underscore.util 框架:框 ...

  10. css,js 学习记录

    记录一些自己曾经阅读,值得收藏的网址 --(css3新特性) https://segmentfault.com/a/1190000010780991#articleHeader41 --CSS3 3D ...