首页 > 其他 > 详细

数位DP

时间:2020-03-20 17:58:50      阅读:55      评论:0      收藏:0      [点我收藏+]

一年前刷的一道题,现在看来挺简单的。贴在下面。

当我们遇到一个问题,求解的是从n到m(n<m)内,不含的某个数的数字的集合时,我们通常首先想到的都是,从n到m一个数一个数的枚举,分别取检测其中是否含有某个特定的数字。例如我们要求取从1到100之间,不含4的数。我们很容易想到要去对每个数字去检验。这看起来似乎很复杂。为解决这个问题,于是,我们有了“数位DP”。

hdu 2089 不要62

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

具体看题。

我们要从n到m之间找出不含4和62的数字。首先是不含4的,这个只需要逐个枚举,然后对比,再用DP存储起来就可以了。其次是62。62稍微特殊一点,因为它要先判断上一位是否是6,如果是6再接着判断下一位是否满足是2。

以下为AC代码:
技术分享图片

在这次牛客新手赛中,也有一道类似的题目,相比之下要简单点,dp只需要开一维数组就够了。

题目描述

经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666!

处女座其实也挺喜欢6这个数字的,实际上他做手环的时候选取的k=6。所以他对于包含数码6的数字极其敏感。每次看到像4567这样的数字的时候他的心就像触电了一样,想起了小姐姐。

现在你要给处女座展示一系列数字,你想知道他的内心会激动多少次。对于同一个数字,他最多只会激动一次,即如果这个数是66666,他还是只会激动一次。
输入描述:
一行包括两个数字l,r,表示你给处女座展示的数字范围为[l,r]。
输出描述:
一行一个整数,表示处女座内心激动的次数。
示例1
输入

复制
10 20
输出

复制
1
备注:
0

l

r

10
18

AC代码(把上题代码改改就可以):
技术分享图片

数位DP

原文:https://www.cnblogs.com/sitr/p/12533031.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!