HDU 2089 不要62(数位DP·记忆化搜索)
题意 中文
最基础的数位DP 这题好像也能够直接暴力来做 令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件
那么非常easy有状态转移方程
dp[i][j] = sum{ dp[i-1][k] }, k = 0...9, j != 4 && !( j == 6 && k == 2)
最后统计个数即可了
#include <bits/stdc++.h>
using namespace std;
int dp[8][10]; int dfs(int i, int j) //记忆化搜索统计以 j 开头的 i 位数满足条件的个数
{
if(dp[i][j] > -1) return dp[i][j]; dp[i][j] = 0;
for(int k = 0; k < 10; ++k)
{
if(j == 4 || (j == 6 && k == 2)) continue;
dp[i][j] += dfs(i - 1, k);
}
return dp[i][j];
} int getNum(int a) //统计[0,a)这个区间满足条件的数的个数
{
int s[10] = {0};
int i = 0, ret = 0;
while(a)
{
s[i++] = a % 10;
a /= 10;
} while(i--)
{
for(int j = 0; j < s[i]; ++j)
if(!(j == 2 && s[i + 1] == 6))
ret += dfs(i + 1, j);
if(s[i] == 4 || (s[i] == 2 && s[i + 1] == 6))
break; //已经不满足条件了
}
return ret;
} int main()
{
memset(dp, -1, sizeof(dp));
for(int i = 0; i < 10; ++i) dp[1][i] = (i != 4); //边界 int n, m;
while(scanf("%d%d", &n, &m), n || m)
printf("%d\n", getNum(m + 1) - getNum(n)); return 0;
}
//Last modified : 2015-07-22 15:22
不要62
杭州交通管理局常常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照。不再含有不吉利的数字了。这样一来,就能够消除个别的士司机和乘客的心理障碍,更安全地服务大众。
不吉利的数字为全部含有4或62的号码。比如:
62315 73418 88914
都属于不吉利号码。可是,61152尽管含有6和2,但不是62连号,所以不属于不吉利数字之列。
你的任务是。对于每次给出的一个牌照区间号,判断出交管局今次又要实际上给多少辆新的士车上牌照了。
1 100
0 0
80
HDU 2089 不要62(数位DP·记忆化搜索)的更多相关文章
- [hdu 2089] 不要62 数位dp|dfs 入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位d ...
- Hdu 2089 不要62 (数位dp入门题目)
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
- HDU 3652 B-number(数位dp&记忆化搜索)
题目链接:[kuangbin带你飞]专题十五 数位DP G - B-number 题意 求1-n的范围里含有13且能被13整除的数字的个数. 思路 首先,了解这样一个式子:a%m == ((b%m)* ...
- 洛谷P2657 [SCOI2009]windy数 [数位DP,记忆化搜索]
题目传送门 windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个win ...
- POJ 3252 Round Numbers(数位dp&记忆化搜索)
题目链接:[kuangbin带你飞]专题十五 数位DP E - Round Numbers 题意 给定区间.求转化为二进制后当中0比1多或相等的数字的个数. 思路 将数字转化为二进制进行数位dp,由于 ...
- HDU 4597 Play Game (DP,记忆化搜索)
Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total S ...
- HDU 2089 - 不要62 - [数位DP][入门题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- HDU 2089 不要62 数位DP模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...
- hdu 2089 不要62 (数位dp基础题)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- MySQL触发器Trigger实例篇
定义: 何为MySQL触发器? 在MySQL Server里面也就是对某一个表的一定的操作,触发某种条件(Insert,Update,Delete 等),从而自动执行的一段程序.从这种意义上讲触发器是 ...
- python基础--类的方法
一:类的方法说明 类的方法分为实例方法,析构方法,构造方法,类方法,静态方法,属性方法,等等 类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用 类方法的隐含调用参数是类,而类实例方 ...
- No.7 selenium学习之路之Alert弹窗
Alert弹窗 弹窗是用工具选不到的~ 切换到alert driver.switch_to_alert() 新的语法:driver.switch_to.alert 注:新的语法不需要后面加括号 打印a ...
- Luogu P2069 【松鼠吃果子】
推荐一波数组模拟链表的讲解 这道题呢,数组写的话不好删除(因为后面要接过来),自然想到链表 对于一个果子,我们可以维护其前驱和后继,我们不妨记与一个点相邻的上面的点为其前驱,下面的点为其后继 观察到题 ...
- MICROSOFT SQLSERVER 总结
--语 句 功 能--数据操作Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据行Delete --从数据库表中删除数据行Update --更新数据库表中的数据--数据 ...
- **CodeIgniter-cURL扩展
Work with cURL easily from your CodeIgniter application. Tweet Contributor : philsturgeon Email : Lo ...
- Metronic 5.0.5 bootstrap后台管理模板
演示地址:http://keenthemes.com/preview/metronic/ 下载 Dashboard Table
- RabbitMQ系列之高可用集群
为了实现高可用,我采用LVS+双节点RabbitMq , 架构图如下: 在RabbitMQ之前放了LVS, LVS 采用 rr 轮询算法 , 目的是将请求平均分配到两个真实节点,并配置5672端口监控 ...
- 【LOJ】#2291. 「THUSC 2016」补退选
题解 在trie树上开vector记录一下这个前缀出现次数第一次达到某个值的下标,以及记录一下现在这个前缀有多少个 为什么thusc有那么水的题--是为了防我这种cai ji爆零么= = 代码 #in ...
- 【POJ】3270.Cow Sorting
题解 用到一点群论的知识! 我们发现把操作写成一个置换后,一定是单个置换圈的内进行操作,把置换圈进行扩大的操作不优 我们有两个办法,一个是用全局最小的换进来,代替这个圈里最小的值,交换操作完成后再换出 ...