hdu 2089 不要62(入门数位dp)
不要62
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 34510 Accepted Submission(s): 12484
杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。
不吉利的数字为所有含有4或62的号码。例如:
62315 73418 88914
都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。
你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。
0 0
/*
第一遍直接用搜索搞得,300多ms,第二次明白了dp数组的用处,只用了15ms
dp数组的作用就是把每次搜到的状态都记录下来,等到再次搜到相同条件的时候,就不用继续递归下去了,直接调用答案,所以时间上会省时不少
*/
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#define N 100
using namespace std;
/*
这个题我感觉没看懂给的数位DP用搜索就搞了,我下去再看看
*/
int g[];//一个数的每一位数,下标从1到len表示的是从个位到最高位
int dp[N][N];//dp[i][j]表示当前剩余位数为i时当前位上有无6的状态为j是的状态;
int dfs(int len,bool s,bool f)//剩下的位数,当前位置是不是6,选择数字的时候有没有限制,遍历的数字不能你要求的这个数还大
{
if(len<)
return ;//找到一个终点了就输出一种解法
if(!f&&dp[len][s]!=-)
return dp[len][s];
int cur=;
int fmax=f?g[len]:;//有限制只能选这一位上的数,没限制的话能选九位
for(int i=;i<=fmax;i++)
{
if(i==||(s&&i==)) continue;//不能有4,并且下两位不能是62
cur+=dfs(len-,i==,f&&(i==fmax));
//cout<<cur<<endl;
}
if(!f)
dp[len][s]=cur;
return cur;
}
int f(int x)
{
int len=;
while(x!=)//将每一位数都存到数组中
{
g[len++]=x%;
x/=;
}
memset(dp,-,sizeof dp);
//cout<<"len="<<len<<endl;
return dfs(len-,false,true);
}
int main()
{
//freopen("in.txt","r",stdin);
int a,b;
while(scanf("%d%d",&a,&b)!=EOF,(a||b))
printf("%d\n",f(b)-f(a-));
return ;
}
hdu 2089 不要62(入门数位dp)的更多相关文章
- HDU 2089 不要62(数位dp入门)
题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 题解:这是数位DP的入门题了,首先要理解数DP的原理,DP[i][j]:代表第i位的第j值,举个栗子:如4715 数位数是从右向 ...
- HDU 2089 不要62【数位DP入门题】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 2089 不要62【数位dp】
HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...
- HDU 2089 不要62(数位dp模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...
- HDU 2089 不要62 【数位dp】
<题目链接> 不要62 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照 ...
- 题解——HDU 2089 不要62(数位DP)
最近在学数位DP 应该是入门题吧 设\( dp[i][0/1] \)表示到第\( i \)位时,前一位是否是6的满足条件的数的个数 然后就是套路 注意\( limit \)的限制条件以及转移时候信息的 ...
- HDU 2089 不要62 (数位DP)题解
思路: 详解 数位DP入门题dp[pos][sta],pos代表当前位数是第几位,sta代表当前状态,因为题目中只要不出现64,所以当前状态只分为两种:前一位是6或不是. #include<io ...
- hdu 2089 不要62 (数位dp)
Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别 ...
- HDU 2089 不要62 (数位DP,入门)
题意: 只要含连续的62,或者含4的车牌号码都是不吉利的,其他都是吉利的组合.问区间[L,R]中有多少个数是吉利的? 思路: 依然是利用树(10进制是十叉树)的思想,统计左边所有子树有多少个数是吉利的 ...
- HDU 2089 不要62:数位dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 问你在区间[n,m]中,有多少个数字不含"4"且不含"62 ...
随机推荐
- windows 下面安装gcc
0.环境说明: win7 家庭版64位 1.下载编译器 https://sourceforge.net/projects/mingw/?source=typ_redirect 如图所示: 注意,安装的 ...
- 内核对象 windows操作系统
问题: 什么是内核对象? 答:内核对象实际上时由内核分配的一块内存,而且只能由内核来访问.它时一个数据结构,成员包含有关于该对象的信息.一些成员对于所有对象类型都是一样的,比如对象名称.安全描述.使用 ...
- Python基础知识总结
看了一个礼拜Python的书,断断续续的看了一大半.今天刚好没有课,想着也没什么事情干,就把这几天Python总结一下,都是一些基础知识 变量和对象的引用 在python中一切都是对象,不像C,jav ...
- Delphi10.2 VCL Forms Application 的构成
Delphi10.2 项目的构成(File Extensions of Files Generated by RAD Studio) Step1.打开 Delphi10.2,选择[File | New ...
- Robberies hdu 2955 01背包
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- S2_SQL_第五章
UNIQUE|FULLTEXT|SPATIAL:分别表示唯一索引,全文索引和空间索引,为可选参数index_name;指定索引名称table_name;指定创建索引表名colymn_name;指定需要 ...
- OpenCV探索之路(二十六):如何去除票据上的印章
最近在做票据的识别的编码工作时遇到一些问题,就是票据上往往会有一些红色印章把一些重要信息区域给覆盖了,比如一些开发票人员盖印章时比较随意,容易吧一些关键区域给遮蔽了,这让接下来的票据识别很困难,因此, ...
- Java公开课-01.类和对象
一,类和对象的含义 1.类:类是具有相同属性(静态特征)和行为(功能 )的一系列事物的集合. eg:以下俩者是不是类 1)汽车 √ 2)小胖桌子上那个红色的杯子 × 2.对象:被精确限定到一个特殊 ...
- keydown - > keypress - > keyup
英文输入法: 事件触发顺序:keydown - > keypress - > keyup 中文输入法: firfox:输入触发keydown,回车确认输入触发keyup chr ...
- redis的发布订阅模式pubsub
前言 redis支持发布订阅模式,在这个实现中,发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel),然后由频道将信息转发给所有对这个 ...