数位动态规划 
    数位动态规划是求解一个大区间[L, R]中间满足条件Q的所有数字的个数(或者和,或其他)的一种方法。它通过分析每一位上的数字,一般用 dp[len][digit][...] 来表示状态“len位长的数字,最高位数字为digit所具有的xx特性”,利用记忆化搜索保存中间结果,从而加快求解速度。 
    通过求 f(n) 从0到n中满足条件Q的数字的个数,则所求的结果为 f(R) - f(L-1).

题目大意 
    给定数字n,找出从0到n中满足条件“数字k中有49(4和9连续)存在”的数字的个数。

题目分析 
    直接数位dp即可。

实现

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef long long ll;
ll dp[30][10]; //dp[len][digit]表示长度为len,且最高位为digit的满足条件Q的数字个数
ll base[30];
int bits[30];
ll Dfs(int len, int digit, bool end_flag, ll n){if (len <= 1)return 0;if (!end_flag && dp[len][digit] != -1)return dp[len][digit];ll ans = 0;int end = end_flag ? bits[len - 2] : 9;for (int i = 0; i <= end; i++){       if (digit == 4 && i == 9){if (end_flag)ans += (1 + n % base[len - 2]);elseans += base[len - 2];}elseans += Dfs(len - 1, i, end_flag && (i == end), n);}if (!end_flag)dp[len][digit] = ans;return ans;
}
int Init(ll n){memset(bits, 0, sizeof(bits));int k = 0;base[0] = 1;while (n){     bits[k++] = n % 10;base[k] = base[k - 1] * 10;n /= 10;}return k;
}
ll Solve(ll n){int len = Init(n);return Dfs(len + 1, 0, true, n);
}
int main(){int T;ll num;scanf("%d", &T);memset(dp, -1, sizeof(dp));while (T--){scanf("%I64d", &num);ll ret = Solve(num);printf("%I64d\n", ret);}return 0;
}

在数据范围较大的时候,使用 long long int类型,但要注意所有使用long long int类型的变量被调用的函数中,参数形式均保持一致为long long int。

hdu_3555 bomb相关推荐

  1. JZOJ 5923. 【NOIP2018模拟10.23】Bomb

    Description 常数国与 Hack 国近年来战火纷飞. 常数国共有 n 个城市,每两个城市之间均有一条交通线联通.如今常数国遭到 Hack 国的重创,岌岌可危.Hack 国国王小 K 决定轰炸 ...

  2. HDU 3555 - Bomb

    第一道数位dp,属于基础模板,又自卑小时没学好数数了,只是不清楚为什么大家的dp定义都是相同的,很显然么,难道我写的是怪胎... /* ID:esxgx1 LANG:C++ PROG:hdu3555 ...

  3. H - Message Bomb Gym - 102798H

    H - Message Bomb Gym - 102798H 题意: 有n个团队,m个人,s个操作 操作1:学生x加入y团队 操作2:学生x推出y团队 操作3:学生x在团队y发送一个信号,在团队y内的 ...

  4. [精品]CSAPP Bomb Lab 解题报告(七)——隐藏关卡

    接上篇[精品]CSAPP Bomb Lab 解题报告(六) gdb常用指令 设置Intel代码格式:set disassembly-flavor intel 查看反汇编代码:disas phase_1 ...

  5. [精品]CSAPP Bomb Lab 解题报告(六)

    接上篇[精品]CSAPP Bomb Lab 解题报告(五) gdb常用指令 设置Intel代码格式:set disassembly-flavor intel 查看反汇编代码:disas phase_1 ...

  6. [精品]CSAPP Bomb Lab 解题报告(五)

    接上篇[精品]CSAPP Bomb Lab 解题报告(四) gdb常用指令 设置Intel代码格式:set disassembly-flavor intel 查看反汇编代码:disas phase_1 ...

  7. [精品]CSAPP Bomb Lab 解题报告(四)

    接上篇[精品]CSAPP Bomb Lab 解题报告(三) gdb常用指令 设置Intel代码格式:set disassembly-flavor intel 查看反汇编代码:disas phase_1 ...

  8. [精品]CSAPP Bomb Lab 解题报告(三)

    接上篇[精品]CSAPP Bomb Lab 解题报告(二) gdb常用指令 设置Intel代码格式:set disassembly-flavor intel 查看反汇编代码:disas phase_1 ...

  9. [精品]CSAPP Bomb Lab 解题报告(二)

    接上篇[精品]CSAPP Bomb Lab 解题报告(一) gdb常用指令 设置Intel代码格式:set disassembly-flavor intel 查看反汇编代码:disas phase_1 ...

最新文章

  1. 关于unity的一个不错的插件平台
  2. 【Oracle 常用查询】oracle表空间使用率统计查询
  3. 低级键盘钩子,在WIN7以上版本的问题
  4. thrift多平台安装
  5. android 支付宝和微信支付封装,Android支付宝和微信支付集成
  6. 洛谷P3371-【模板】单源最短路【SPFA】
  7. war3必须安装的游戏组件_在单独的WAR组件中对SPA资源和API实现进行分区
  8. 【python接口自动化-requests库】【三】优化重构requests方法
  9. Python nltk包
  10. 年前辞职-WCF入门学习(5)
  11. 超全的JS重新加载当前页面的几种方式
  12. 基于SSM框架的志愿者管理系统
  13. 发票信息提取系统解决方案(纸质发票、电子发票)
  14. Error response from daemon: driver failed programming external connectivity on endpoint dz-redis
  15. 使用IDEA运行OnlyOffice的Java示例
  16. 【java】BMI:体重指数,又称身体质量指数,英文为Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。
  17. Vue 开发必须知道的 36 个技巧【近1W字】
  18. you-get详细配置教程
  19. 前端:使用CSS3实现酷炫的3D旋转透视
  20. 2022年低压电工考试试题模拟考试平台操作

热门文章

  1. shell脚本连接、读写、操作mysql数据库实例
  2. JAVA ActiveMQ消息发送和接收
  3. 中小企业上云多地域办公组网(SAG)解决方案
  4. Mozilla 将推出全新的安卓移动浏览器 Fenix
  5. 命令行运行postman
  6. 关于STM32库中 __IO 修饰符(volatile修饰符,反复无常的意思)
  7. 3.0 mysql配置讲解
  8. 在Eclipse中运行JAVA代码远程操作HBase的示例
  9. 基于ObjectCache的应用
  10. Ora-00600 错误的代码含义及常用查询