HDU 2089 不要62 数位DP模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089
参考博客:https://www.cnblogs.com/HDUjackyan/p/9142156.html
说明,上面这篇博客已经可以很清楚地理解这道题目所表现得意思了。我这里是上述博客中的第一题。
这道题目呢我目前已经知道怎么做了,但是我还不能很好地做到用文字表述出来,所以大家可以试着看看我的代码,我也是通过看上面那篇博客的代码理解数位DP的思想的。
我在上面博客的代码中做了一些精简,省略了一个多余的状态参数,代码如下:
#include <iostream>
#include <cstring>
using namespace std;
int a[20], dp[20][2];
/*
pos表示目前将要访问的位置
pre表示前一个值是不是6,因为这里涉及到62连数,所以我们在访问到后一位的时候要考虑前一位,这里pre就用于存储前一位
limit表示是不是在边界位置
*/
int dfs(int pos, int stat, bool limit) {
if (pos == -1) return 1;
if (!limit && dp[pos][stat] != -1) return dp[pos][stat];
int up = limit ? a[pos] : 9;
int tmp = 0;
for (int i = 0; i <= up; i ++) {
if (stat && i == 2) continue;
if (i == 4) continue;
tmp += dfs(pos-1, i==6, limit&&i==a[pos]);
}
if (!limit) dp[pos][stat] = tmp;
return tmp;
}
int solve(int x) {
int pos = 0;
while (x) {
a[pos++] = x % 10;
x /= 10;
}
return dfs(pos-1, 0, true);
}
int main() {
int l, r;
while ((cin >> l >> r) && l+r) {
memset(dp, -1, sizeof(dp));
cout << solve(r) - solve(l-1) << endl;
}
return 0;
}
其中,
- pos表示目前将要访问的位置
- pre表示前一个值是不是6,因为这里涉及到62连数,所以我们在访问到后一位的时候要考虑前一位,这里pre就用于存储前一位
- limit表示是不是在边界位置
学习链接:
HDU 2089 不要62 数位DP模板题的更多相关文章
- 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基础题)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Hdu 2089 不要62 (数位dp入门题目)
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
- HDU 2089 不要62(数位DP·记忆化搜索)
题意 中文 最基础的数位DP 这题好像也能够直接暴力来做 令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ 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
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 2089不要62 (数位dp)
Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来 ...
- HDU 2089 不要62(数位dp模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...
- HDU 3555 Bomb(数位DP模板啊两种形式)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 Problem Description The counter-terrorists found ...
随机推荐
- IDEA 中tomcat图片储存和访问虚拟路径(图片和程序分家)
本文链接:https://blog.csdn.net/qq_36481052/article/details/78813213 **前段时间,遇到了图片已经储存了文件中也显示有图片,但就是死活访问不到 ...
- [VSCode] Custom settings
{ // UI IMPROVEMENTS —————————————————— // Part 1. "editor.minimap.enabled": false, " ...
- 精妙的SQL语句
说明:复制表(只复制结构,源表名:a 新表名:b)select * into b from a where 1<>1 说明:拷贝表(拷贝数据,源表名:a 目标表名:b)insert i ...
- win32线程栈溢出问题 (一)
一.什么是线程栈溢出 我们都知道,每一个win32线程都会开辟一个空间,用来临时存储线程执行时所调用的一系列函数的参数.返回地址和局部变量及其他上下文信息.这个空间就是线程的栈区.栈区的容量是有限的, ...
- 了解区块链&比特币
https://www.bilibili.com/video/av45247943 假如有ABCD四个比特币交易者,其中A交易给B者10个比特币(BTC),而这条信息要广播给其他所有的交易者知道. 假 ...
- mount命令设备的挂载和卸载
不能挂载到根目录:其他目录都可以 1.光盘设备挂载到mnt mount -t iso99660 /dev/cdrom /mnt 2.光盘镜像文件.so文件挂载到mnt mount -o loop -t ...
- (23)打鸡儿教你Vue.js
实例: 模板语法 vue-router,vuex以及调式方法介绍 打包部署: npm run build Webpack 目前无论在求职还是工作中,使用越来越普及.而想要学懂,学会Webpack更绝非 ...
- C/C++输入
fgets(str,n,stdin) 从键盘输入一行,替代gets().读取到n-1字节时或换行符时终止,如果是文件的话,读到文件结尾也会停止 getline(cin,str) str的类型必须是st ...
- SQL题(子文章)(持续更新)
-----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...
- [学习笔记] 二叉查找树/BST
平衡树前传之BST 二叉查找树(\(BST\)),是一个类似于堆的数据结构, 并且,它也是平衡树的基础. 因此,让我们来了解一下二叉查找树吧. (其实本篇是作为放在平衡树前的前置知识的,但为了避免重复 ...