博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2089 不要62(数位简单DP)
阅读量:6900 次
发布时间:2019-06-27

本文共 1702 字,大约阅读时间需要 5 分钟。

 

不要62

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 42615    Accepted Submission(s): 15587

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,虽然是简单的数位DP,但是也花了我很长很长时间去理解和感悟Orz。
 
数位dp适用于在某一区间内找出满足某些条件的数的个数,一般用循环遍历肯定会超时,那么这时候可以考虑用数位dp来解决。
数位dp的常见形式是dp[i][j],来表示位数是i,首位是j的满足条件的数有多少个。当然也有dp[i][j][k]等等,但i,j,k一般都不会很大,这就比遍历要省时多了。。
 

附上大神的题目解析:

 

因为求得的是小于n的数,所以求[0,n]之间的数需要求solve(n+1)。
代码如下:
#include
#include
using namespace std;int dp[10][10],num[10];void init(){ dp[0][0] = 1; for(int i=1;i<=7;i++) for(int j=0;j<10;j++) for (int k = 0; k < 10; k++) if (j != 4 && !(j == 6 && k == 2)) dp[i][j] += dp[i - 1][k];}int solve(int n){ int ans = 0, t = 0; while (n) { num[++t] = n % 10; n /= 10; } num[t + 1] = 0; for (int i = t; i >= 1; i--) { for (int j = 0; j < num[i]; j++) { if (!(num[i + 1] == 6 && j == 2)) ans += dp[i][j]; } if (num[i] == 4 || (num[i + 1] == 6 && num[i] == 2)) break; } return ans;}int main(){ init(); int n, m; while (cin >> n >> m,(n||m)) { cout << solve(m+1) - solve(n) << endl; } return 0;}

 

转载于:https://www.cnblogs.com/orion7/p/6925075.html

你可能感兴趣的文章
[转载]安装archlinux 以后没有 ifconfig,route ,nslo
查看>>
人见人爱A^B
查看>>
zoj 3795 Grouping tarjan缩点 + DGA上的最长路
查看>>
浏览器内核
查看>>
zabbix-server安装部署配置
查看>>
终于解决 xUnit.net 测试中无法输出到控制台的问题
查看>>
【素数筛】分解质因数
查看>>
【ADT】队列的基本C语言实现
查看>>
NYOJ-1057 寻找最大数(三)(贪心)
查看>>
qt信号和槽
查看>>
第二章
查看>>
【Beta阶段】第六次Scrum Meeting
查看>>
nginx.conf配置文件详解
查看>>
maven使用问题汇总
查看>>
JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
查看>>
beautifulsoup 的children和descandants
查看>>
容器化微服务
查看>>
windows下redis 开机自启动
查看>>
python+selenium自动化测试-定位方式
查看>>
一致性Hash(Consistent Hashing)原理剖析
查看>>