Description

题意就是找0到N有多少个数中含有49。

\(1\leq N \leq2^{63}-1\)

Solution

数位DP,与hdu3652类似

\(F[i][state]\)表示位数为i,包含49状态为state时的方案数

注意开\(long long\)

Tips

注意N范围很大,位数不止10位!!

Code

#include <cstdio>
#include <cstring>
#define ll long longint d[20];
ll dp[20][3],n,T;inline ll read(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}ll dfs(int p,int sta,int lim){ll &tmp=dp[p][sta],r=0;if(!lim&&tmp!=-1) return tmp;if(!p) return sta==2;int mx=lim?d[p]:9;for(int i=0;i<=mx;++i){int t=0;if(sta==2) t=2;else if(sta==1&&i==9) t=2;else if(i==4) t=1;r+=dfs(p-1,t,lim&&(i==mx));}return lim?r:tmp=r;
}int main(){T=read();memset(dp,-1,sizeof(dp));while(T--){n=read();int len=0;while(n){d[++len]=n%10;n/=10; }d[len+1]=0;printf("%lld\n",dfs(len,0,1));}return 0;
}

转载于:https://www.cnblogs.com/void-f/p/8092633.html

[Hdu3555] Bomb(数位DP)相关推荐

  1. hdu3555 Bomb 数位dp

    //3555 //题意:统计 1 到 n 中包含 49 的数的个数 1 #include "bits\stdc++.h" 2 using namespace std; 3 __in ...

  2. 【hdu3555】Bomb 数位dp

    题目描述 求 1~N 内包含数位串 "49" 的数的个数. 输入 The first line of input consists of an integer T (1 <= ...

  3. HDU - 3555 Bomb(数位dp)

    题目链接:点击查看 题目大意:给定一个整数n,求从1到n的闭区间内含有相邻"49"的数字的个数. 题目分析:裸的数位dp,这里说一下两种做法,第一种是正着求,也就是求含有49的数字 ...

  4. HDU 3555 Bomb (数位DP)

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

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

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

  6. Bomb(数位DP板题)

    题目链接:Bomb Problem Description The counter-terrorists found a time bomb in the dust. But this time th ...

  7. 动态规划 —— 数位 DP

    [概述] 数位 DP 实际是一种计数用的 DP,一般就是统计一个区间 [le,ri] 内满足一些条件数的个数. 所求的限定条件往往与数的位数有关,例如:数位之和.指定数码个数.数的大小顺序分组等. 题 ...

  8. 数位DP 不断学习中。。。。

    1, HDU 2089  不要62 :http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:不能出现4,或者相邻的62, dp[i][0],表示不存在不吉 ...

  9. 数位DP 学习笔记1(数位DP入门)

    HDU 2089 不要62: 题目大意是给你一个区间,让你统计这个区间里不包含 4 和 62 的数字的个数. 最朴素的思路是: 对于每个区间 [l, r],遍历所有在区间 [l, r] 里的数字,然后 ...

  10. 解题报告 (十四) 数位DP

    文章目录 数位DP 解题报告 HDU 4722 Good Numbers HDU 2089 不要62 HDU 3555 Bomb HDU 3652 B-number PKU 3252 Round Nu ...

最新文章

  1. 2022-2028年中国液化石油气(LPG)行业投资分析及前景预测报告
  2. SD--根据订单创建发票(相关的函数列表的介绍系列篇(3))
  3. uva437巴比伦塔
  4. Oracle实例和服务知识点
  5. MacOSX环境上的多个Java JDK
  6. py2exe打包pyqt程序
  7. style.width与offsetWidth的区别
  8. 维特比算法Viterbi Algorithm
  9. java array使用_Java_ArrayLit详细用法
  10. visio怎么画球_快速学习Visio 门球制图
  11. WIN10 ltsc 添加输入法
  12. flink(三):数据处理Transformation
  13. 【面试总结】涵盖1-3年Java程序员必须精通的面试技巧
  14. (附源码)音乐播放小程序 毕业设计 031306
  15. 用 Python 分析《长安十二时辰》
  16. C/C++ 下标运算符subscript、后缀表达式、正负下标
  17. mooc c语言练习题
  18. 驻极体话筒的正常工作电压是多少?
  19. python个人所得税实验报告+操作界面
  20. 单片机与STM32问题及解决

热门文章

  1. ROS Learning-008 beginner_Tutorials ROS话题
  2. GridView 设置背景透明以及Item的点击动画
  3. 如何开发和维能hold住全场的软件
  4. 四天玩转windows phone开发视频之第二天总结
  5. 20172327 2017-2018-2 《程序设计与数据结构》第九周学习总结
  6. 5.27 indeed 第三次网测
  7. jQuery动态星级评分效果实现方法
  8. [转]Android调用so文件(C代码库)方法详解
  9. 个人作业week7——前端开发感想总结
  10. 给iphone或touch加桌面图标