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

题意:上一题是不要62 这个是“不要49”

代码:

  1. #include <stdio.h>
  2. #include <ctime>
  3. #include <math.h>
  4. #include <limits.h>
  5. #include <complex>
  6. #include <string>
  7. #include <functional>
  8. #include <iterator>
  9. #include <algorithm>
  10. #include <vector>
  11. #include <stack>
  12. #include <queue>
  13. #include <set>
  14. #include <map>
  15. #include <list>
  16. #include <bitset>
  17. #include <sstream>
  18. #include <iomanip>
  19. #include <fstream>
  20. #include <iostream>
  21. #include <ctime>
  22. #include <cmath>
  23. #include <cstring>
  24. #include <cstdio>
  25. #include <time.h>
  26. #include <ctype.h>
  27. #include <string.h>
  28. #include <assert.h>
  29. using namespace std;
  30. #define N 50
  31. using namespace std;
  32. int bit[N];
  33. long long dp[N][3];
  34. /*
  35. dp[i][0]:前i位不含 49 的个数。
  36.    dp[i][1]:前i位不含 49 数且i+1位是4的个数。
  37.   dp[i][2]:前i位含 49 的个数。
  38. */
  39. long long dfs(int pos, int st, bool flag)
  40. {
  41. if (pos == 0) return st == 2;
  42. if (flag && dp[pos][st] != -1) return dp[pos][st];
  43. long long ans = 0;
  44. int u = flag ?
  45. 9 : bit[pos];
  46. for (int d = 0;d <= u;d++)
  47. {
  48. if (st == 2 || (st == 1 && d == 9))
  49. ans += dfs(pos - 1, 2, flag || d<u);
  50. else if (d == 4)
  51. ans += dfs(pos - 1, 1, flag || d<u);
  52. else
  53. ans += dfs(pos - 1, 0, flag || d<u);
  54. }
  55. if (flag) dp[pos][st] = ans;
  56. return ans;
  57. }
  58. long long solve(long long n)
  59. {
  60. int len = 0;
  61. while (n)
  62. {
  63. bit[++len] = n % 10;
  64. n /= 10;
  65. }
  66. return dfs(len, 0, 0);
  67. }
  68. int main()
  69. {
  70. long long n;
  71. int t;
  72. scanf("%d",&t);
  73. while (t--)
  74. {
  75. scanf("%lld", &n);
  76. memset(dp, -1, sizeof(dp));
  77. printf("%lld\n", solve(n));
  78. }
  79. return 0;
  80. }

hdu 3555 Bomb 【数位DP】的更多相关文章

  1. HDU 3555 Bomb 数位dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others) Mem ...

  2. HDU 3555 Bomb 数位DP 入门

    给出n,问所有[0,n]区间内的数中,不含有49的数的个数 数位dp,记忆化搜索 dfs(int pos,bool pre,bool flag,bool e) pos:当前要枚举的位置 pre:当前要 ...

  3. HDU - 3555 - Bomb(数位DP)

    链接: https://vjudge.net/problem/HDU-3555 题意: The counter-terrorists found a time bomb in the dust. Bu ...

  4. Bomb HDU - 3555 (数位DP)

    Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...

  5. HDU(3555),数位DP

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others ...

  6. HDU 3555 Bomb (数位DP-记忆化搜索模板)

    题意 求区间[1,n]内含有相邻49的数. 思路 比较简单的按位DP思路.这是第一次学习记忆化搜索式的数位DP,确实比递推形式的更好理解呐,而且也更通用~可以一般化: [数位DP模板总结] int d ...

  7. hud 3555 Bomb 数位dp

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Subm ...

  8. hdoj 3555 BOMB(数位dp)

    //hdoj 3555 //2013-06-27-16.53 #include <stdio.h> #include <string.h> __int64 dp[21][3], ...

  9. 数位DP入门之hdu 3555 Bomb

    hdu 3555 Bomb 题意: 在1~N(1<=N<=2^63-1)范围内找出含有 ‘49’的数的个数: 与hdu 2089 不要62的区别:2089是找不不含 '4'和 '62'的区 ...

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

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

随机推荐

  1. SpringBoot 2.x (1):手动创建项目与自动创建项目

    SpringBoot 2.x基于Spring Framework 5.x 环境需求如下: JDK1.8或以上 Maven3.2或以上 这里我使用的是Eclipse,IDEA这个工具很强大,但不习惯它 ...

  2. NodeJs学习记录(一)初步学习,杂乱备忘

    2016/12/26 星期一 1.在win7下安装了NodeJs 1)进入官网 https://nodejs.org/en/download/,下载对应的安装包,我目前下载的是node-v6.2.0- ...

  3. 【雅虎2017】一个在线展示广告的CVR预估框架实践

    论文A Practical Framework of Conversion Rate Prediction for Online Display Advertising 定期更新,获取更多,欢迎sta ...

  4. CSS垂直居中和水平居中的几种方法

    垂直居中 方法一 这个方法把div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align属性. <!DOCTYPE html> <html lang=" ...

  5. 微信小程序打卡第五天

    2018-02-1823:55:53大年初三 微信小程序已经学了5个夜晚了,没有很努力,只是简单地接触,感觉从今天开始有了突破的进展,很爽! 无意间发现一个很好的教程,也是一个老哥分享的,很给力 ht ...

  6. Linux学习日记之crontab使用notify-send实现每小时通知提醒

    crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行 通过crontab -e 可以打开编辑文件添加新的命令 notif ...

  7. jQuery之基本选择器Practice

    一.在输入框中输入数字,点击按钮,实现对应事件的功能. html代码: <input id="txt1" type="text" value=" ...

  8. 好用的sublime插件以及快捷键

    管理插件:使用Ctrl+`(Esc键下方)快捷键或者通过View->Show Console菜单打开命令行 import urllib.request,os,hashlib; h = '2915 ...

  9. zabbix3.0_网络发现问题

    问题1. Zabbix网络发现system.uanem找不到主机,打开zabbix_server.conf文件的debug DebugLevel=5 # 错误信息如下 # item [system.u ...

  10. 网络编程基础_3.APC队列

    APC队列 #include <stdio.h> #include <windows.h> // 保存 IO 操作的结果 CHAR Buffer1[] = { }; CHAR ...