数位DP入门题 hdu 2089 hdu 3555
hdu 2089 不要62
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089
题意:对于每次给出的一个区间,找出区间内多少个数字没有出现62和4。
思路:
数位DP入门题,对于dfs设置3个参数。
一个表示现在进行到第几位,
一个表示前一个标记状态,这里表示上一位是不是6。
一个表示是否现在是这位可以取到的最大的数字。
如果上一位是6,那么这位不可以取2。且当前位都不可以取4。
1 #include <bits/stdc++.h> 2 using namespace std; 3 int dp[10][2], num[10]; 4 int dfs(int cur, int state, int limit) 5 { 6 if(cur < 0) return 1; 7 if(!limit && dp[cur][state] != -1) return dp[cur][state]; 8 9 int ret = 0; 10 int up = limit?num[cur]:9; 11 for(int i = 0; i <= up; i++) 12 { 13 if(state == 1 && i == 2 || i == 4) continue; 14 else ret += dfs(cur-1, i == 6, limit && i == up); 15 } 16 if(!limit) dp[cur][state] = ret; 17 return ret; 18 19 } 20 int slove(int x) 21 { 22 memset(dp, -1, sizeof(dp)); 23 int cnt = 0; 24 while(x) 25 { 26 num[cnt++] = x % 10; 27 x /= 10; 28 } 29 return dfs(cnt-1, 0, 1); 30 } 31 int main() 32 { 33 // freopen("in.txt", "r", stdin); 34 // freopen("out.txt", "w", stdout); 35 int n, m; 36 while(~scanf("%d%d", &n, &m) && n+m) 37 { 38 printf("%d\n", slove(m) - slove(n-1)); 39 } 40 return 0; 41 }
hdu 3555 bomb
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555
题意:找出1-N中出现49的数字个数。
思路:和上题差不多,如果前几位出现4,则这位不能出现9。
1 #include <bits/stdc++.h> 2 using namespace std; 3 int T; 4 int num[30]; 5 long long dp[30][2]; 6 long long dfs(int cur, int state, int limit) 7 { 8 if(cur < 0) return 1; 9 if(!limit && dp[cur][state] != -1) return dp[cur][state]; 10 11 long long ret = 0; 12 int up = limit?num[cur]:9; 13 for(int i = 0; i <= up; i++) 14 { 15 if(state && i == 9) continue; 16 ret += dfs(cur-1, i == 4, limit && i == up); 17 } 18 if(!limit) dp[cur][state] = ret; 19 return ret; 20 } 21 long long slove(long long x) 22 { 23 memset(dp, -1, sizeof(dp)); 24 int cnt = 0; 25 while(x) 26 { 27 num[cnt++] = x%10; 28 x /= 10; 29 } 30 return dfs(cnt-1, 0, 1); 31 } 32 long long N; 33 int main() 34 { 35 // freopen("in.txt", "r", stdin); 36 // freopen("out.txt", "w", stdout); 37 scanf("%d", &T); 38 while(T--) 39 { 40 scanf("%lld", &N); 41 printf("%lld\n", N+1-slove(N)); 42 } 43 44 return 0; 45 }
转载于:https://www.cnblogs.com/titicia/p/5233563.html
数位DP入门题 hdu 2089 hdu 3555相关推荐
- 数位dp入门题 洛谷P2657 [SCOI2009] windy 数
题干 传送门 windy 定义了一种 windy 数. 题目描述 不含前导零且相邻两个数字之差至少为 2的正整数被称为 windy 数.windy 想知道,在 a 和 b 之间,包括 a 和 b ,总 ...
- hdu 2089 数位dp入门
HDU 2089 题意:中文题 思路:数位dp入门题 AC代码: #include "iostream" #include "string.h" #includ ...
- Bomb(数位DP板题)
题目链接:Bomb Problem Description The counter-terrorists found a time bomb in the dust. But this time th ...
- 数位DP 学习笔记1(数位DP入门)
HDU 2089 不要62: 题目大意是给你一个区间,让你统计这个区间里不包含 4 和 62 的数字的个数. 最朴素的思路是: 对于每个区间 [l, r],遍历所有在区间 [l, r] 里的数字,然后 ...
- 数位DP入门+数位DP模板
数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听的名字,数位的含义:一个数有个位.十位.百位.千 ...
- 不要62(HDU-2089)(数位DP模板题)
杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍 ...
- 数位 DP 入门 (不要 62+windy 数)
\[I\] 平常的做法是设 \(f_{i,j}\) 为 \(0\)~\(j \times 10^{i-1}\) 的合法个数,这里用某种神奇而快速的做法. 简化题意: 不要 \(6\ 2\) 连在一起的 ...
- 数位DP入门之hdu 3652 B-number
hdu 3652 B-number Problem Description A wqb-number, or B-number for short, is a non-negative integer ...
- hdu_Anniversary party_(树形DP入门题)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直 ...
- 数位DP入门笔记(1)HUD-2089
题目: 题目理解和思路: 1.此题是给一个6位车牌号,正着不能含有连着的62,不能有4. 2.判断车牌号可能会采用dfs,因为每增加一位数就包含带4,或者形成62两种不合法情况(可以用但此代码没有用到 ...
最新文章
- 不明白点积的几何意义
- Uploadify导致Chrome频繁崩溃Crash
- GraphQL 学习
- redis事务不具有回滚机制,那么它是如何进行事务控制的
- 【博客征文】畅谈百度轻应用初体验
- Effective Java 英文 第二版 读书笔记 Item 14:In public classes,use accessor methods,not public fields...
- 【Elasticsearch】es keywods 类型数据 写入后查询不到
- VB在XP/2K 任务管理器的进程列表中隐藏当前进程
- a as as big rat_12句英语绕口令,你能一口气读完几句?
- 基于C语言的菜鸟驿站管理系统
- 微软internet连接服务器,微软WEBS安装攻略之建立临时 Internet 连接
- 黎活明写给程序员的忠告
- Spring Boot(四)—— Spring MVC自动配置
- Linux基础8-TCP的面向链接(三次四次)
- 电脑远程开机以及控制
- 电脑蓝屏,报错信息0xc000007b
- 设置IntelliJ IDEA生成注释时的@author
- Java毕设项目-医药信息管理系统
- 埃森哲大连java面试_埃森哲软件工程师面试经验
- 学术会议 Rebuttal 模板资料留存
热门文章
- Lucene.Net 2.3.1开发介绍 —— 一、接触Lucene.Net
- [LeetCode]41.First Missing Positive
- CXF开发WebService服务器端
- day 07总结(数字类型内置方法/字符串类型内置方法)
- Python虚拟环境的搭建
- java基础5 (一维)数组和二维数组
- PHP扩展迁移为PHP7扩展兼容性问题记录
- hdu1421 搬寝室 DP
- [iOS]学习笔记3(动态性)
- 利用DataSet、DataTable、DataView按照自定义条件过滤数据