不要62

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 26743    Accepted Submission(s): 9385

Problem Description
杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。
杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。
不吉利的数字为所有含有4或62的号码。例如:
62315 73418 88914
都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。
你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。
 
Input
输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。
 
Output
对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。
 
Sample Input
1 100
0 0
 
Sample Output
80

  数位DP最基础的题目。。
  
  首先我们设数组f[i][j]代表第i位是j有f[i][j]种情况。
  
  然后我们用预处理出10位以下的f[i][j].
  
  转移大约是f[i][j]=f[i-1][k](k!=4&&j!=4&&!(j==6&&k==2))
  
  然后求出这个以后,我们可以认为答案=1-R之间的数字个数-1-L之间的数字个数
  
  大约是对于一个数字,先把它存入一个数组
  
  然后对于最高位,可以是0-num[len].
  
  这里分三种情况:
    1.是0的情况,这是我们推向更低位。
    2.是num[len],我们也推向更低位。
    3.其他情况直接加f数组。
  
  对于1情况,我们直接把len-1到1的位数的每一位设为1-9然后加上f[i][j].这样处理完了所有位的所有情况。
  
  对于2情况,就是下一位的3种情况和。
  
  3情况不用说。  
  注意考虑合法情况。
  

 #include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> using namespace std; int f[][]; void DP()
{
for(int i=;i<=;i++)
if(i!=)f[][i]=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(j!=)
for(int kk=;kk<=;kk++)
if(kk!=&&!(j==&&kk==))
f[i][j]+=f[i-][kk];
} int get(int x)
{
int num[],len=,res=;
while(x)
{
num[++len]=x%;
x/=;
}
for(int i=;i<num[len];i++)
res+=f[len][i];
for(int i=;i<=len-;i++)
for(int j=;j<=;j++)
res+=f[i][j];
if(num[len]==)return res;
for(int i=len-;i>=;i--)
{
for(int j=;j<num[i];j++)
{
if(j== || (j== && num[i+]==) )continue;
res+=f[i][j];
}
if(num[i]== || (num[i+]== && num[i]==) )break;
}
return res;
} int main()
{
DP();
int l,r,num,snum,ans=;
while()
{
scanf("%d%d",&l,&r);
if(!(l&&r))break;
printf("%d\n",get(r+)-get(l));
}
return ;
}
  

【数位DP】Hdu 2089:不要62的更多相关文章

  1. 数位DP HDU - 2089 不要62

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

  2. 2019年9月训练(壹)数位DP (HDU 2089)

    开学之后完全没时间写博客.... HDU 2089 不要62(vjudge) 数位DP 思路: 题目给出区间[n,m] ,找出不含4或62的数的个数 用一个简单的差分:先求0~m+1的个数,再减去0~ ...

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

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

  4. 数位dp入门 hdu2089 不要62

    数位dp入门 hdu2089 不要62 题意: 给定一个区间[n,m] (0< n ≤ m<1000000),找出不含4和'62'的数的个数 (ps:开始以为直接暴力可以..貌似可以,但是 ...

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

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

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

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

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

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

  8. HDU 2089 不要62 数位DP模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...

  9. hdu 2089 不要62【数位dp】

    HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...

  10. HDU 2089 不要62(数位dp入门)

    题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 题解:这是数位DP的入门题了,首先要理解数DP的原理,DP[i][j]:代表第i位的第j值,举个栗子:如4715   数位数是从右向 ...

随机推荐

  1. HttpClient(4.3.5) - 简单示例

    HttpClient 是一个客户端的 HTTP 传输库,而不是浏览器.HttpClient 的目的是传输和接收 HTTP 报文.HttpClient 不会尝试去处理报文内容,执行嵌入 HTML 内的 ...

  2. RESTful 服务架构风格 * .NET的RESTful框架 OpenRasta

    REST 的约束采用的就是掌控 Web 的基本原则.这些原则是: 用户代理与资源交互,任何可命名和表达的事物都可称为资源.每项资源都有一个唯一的统一资源标识符 (URI). 与资源的交互(通过其唯一的 ...

  3. 转 DevExpress-ASPxPageControl 动态添加 TabPage 内容

    话不多说想看代码,在细说. 前台,很简单.主要看后台 </dx:ASPxPageControl> 后台,注意注释说明. private void GetUserAttendCellsNew ...

  4. svn 分支整个项目合并主干

    1.首先主干要更新最新版本. 2.找到主干(trunk)点击右键--合并--合并类型选择(合并一个版本范围)点击下一步--合并源选择整个分支项目--将要合并的修改版本范围(选择指定(a)范围)点击下一 ...

  5. 在ASP.NET项目中使用CKEditor +CKFinder实现图片上传功能

    前言 之前的项目中一直使用的是FCKeditor,昨天突然有个想法:为什么不试一下新的CKEditor呢?于是花了大半天的时间去学习它的用法,现在把我的学习过程与大家分享一下. 谈起FCKeditor ...

  6. c++ 11 国标标准方面的异常处理与微软在Visual Studio 2012的异常处理的区别

    这段代码: __try { } __except(GetErrorCode()) { } 可以捕获空指针,但是包围在其中的代码不能有自带析构函数的对象.c++ 11 标准里面的auto_ptr关键字, ...

  7. AE实现矢量图层标注属性

    添加引用ESRI.ArcGIS.Carto 1.获取图层 IGeoFeatureLayer pFtrLayer = m_pLayer as IGeoFeatureLayer; 2.初始化标注属性集合 ...

  8. 学习C++ Primer 的个人理解(一)

    <C++ Primer>这本书可以说是公认的学习C++最好的书,但我觉得不是特别适合作为教材,书中内容的顺序让人有些蛋疼.我个人认为初学此书是不能跳着看的.如果急于上手的话,我更推荐< ...

  9. ThreadPool 线程池的作用

    相关概念: 线程池可以看做容纳线程的容器: 一个应用程序最多只能有一个线程池: ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池: 每排入一个工作函数,就相 ...

  10. SAP校园招聘笔试

    一直就向往着SAP公司,终于,有幸今天参加了SAP校园招聘的笔试.下面我就来简单说说这个笔试的内容. 笔试分为两大部分,一部分是逻辑题,就是些什么阅读分析计算balabala的一堆,是全英文的.另外一 ...