hdu 2089 不要62

杭电2082代码 这是杭电一道关于母函数的题目,代码有详解 立即下载

不要62

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 46351    Accepted Submission(s): 17547


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的数的个数;

好了。这么简单,我就一个数一个数的找,O(N)的复杂度,但是会被T的;那么时间复杂度还能怎么优化呢?我们发现所有开头为4的数都不是合法的,但是当我们一个数一个数的找时,就重复的找了41,42,43,41111,4555,410000......所以我们需要找寻一个算法使得查数时不需要像之前一样重复查找,当我们找到4000000时,4000001~4999999之间的数都不需要找,直接跳过就好了,很明显这个方法与数的每一位的数字有关,同样与之前的状态有关,所以我们称这个算法为数位DP;

唉~~不容易,总算把数位DP扯出来了;也是第一次接触数位DP,这里推荐一个博客,写的很详细,从模板到例题应有尽有:详情戳这里!!!

好了,直接看看本道题的代码吧:

#include <iostream>
#include <string.h>

using namespace std;

int digit[10];                                          //用来存数的位数,及每个数位上的最大值;
int dp[10][2];                                          //存状态
int dfs(int per, bool state, bool fp){                  //per表示位数,per=4表示在第四位;
                                                        //state表示状态,if  state=1,表示第per位的前一位是6;
                                                        //fp表示在第per位上是否有上限,即在该位的取值为0~9还是0~digit[per];
    if(per==0) return 1;                                //当per为0时,表示已经枚举了一个有意义的数,答案加1;
    if(!fp && dp[per][state]!=-1) return dp[per][state];//避免重复计算;
    int ret=0, fpmax = fp!=0? digit[per] : 9;           //fpmax表示在该位的最大值;
    
    for(int i=0; i<=fpmax; i++){
        if(i==4 || (state&&i==2)) continue;             //当出现4,或者前一位为6,当前位为2时跳过不计;
        else ret+=dfs(per-1, i==6, i==fpmax && fp);     //i==6用来判断递归后前一位是否为6;
    }
    if(fp==0) dp[per][state]=ret;
    return ret;
}
int Cnt(int n){
    int per=0;
    memset(digit, 0, sizeof(digit));
    while(n){                                        //计算数的每一位数;
        digit[++per]=n%10;
        n/=10;
    }
    return dfs(per, false, true);
}
int main(){

    int n, m;
    while(cin >> n >> m, n&&m){
        memset(dp, -1, sizeof(dp));
        int ans = Cnt(m) - Cnt(n-1);
        cout << ans << endl;
    }

    return 0;
}





Intel Arc显卡玩《三角洲行动》报错?手把手教你修改注册表跳过验证 本文针对Intel Arc显卡用户在运行《三角洲行动》时遇到的驱动验证报错问题,提供了详细的解决方案。通过安全修改Windows注册表,添加特定键值以跳过游戏驱动兼容性验证,并结合游戏内图形设置与Intel驱动面板的优化建议,旨在帮助玩家顺利进入游戏并提升游戏帧率与运行稳定性。 阅读详情

相关推荐

Vivado FFT IP核配置与实战:FPGA信号处理硬件加速指南

快速傅里叶变换(FFT)是数字信号处理(DSP)中的核心算法,用于将时域信号转换到频域进行分析。其原理基于离散傅里叶变换(DFT),通过蝶形运算的分解与复用,大幅降低了计算复杂度。在工程实践中,软件实现的FFT难以满足高速实时处理的需求,因此硬件加速方案至关重要。FPGA凭借其并行架构和可定制性,成为实现高性能FFT的理想平台。通过集成专用的FFT IP核,如Vivado中的Pipelined Streaming I/O架构,可以构建流水线化的计算引擎,实现极低延迟和高吞吐量的连续数据流处理。这种硬件方案特

weixin_42536863的博客 646

杭电OJ_2089(C++版)

#include <iostream> using namespace std; int BadNum[1000001]; int main() { int sum=0,tmp; for (int i=1;i<=1000000;++i) { tmp=i; while(tmp>0) { if(tmp%10==4||tmp%100==62) {...

酱紫蛙的博客 551

MATLAB新手必看:SVPWM七段式算法仿真全流程解析(附完整代码)

本文为MATLAB新手和电机控制初学者提供了SVPWM七段式算法的完整仿真与代码实现指南。文章详细解析了从扇区判断、矢量作用时间计算到PWM波形生成的全流程,并附带了可直接运行的MATLAB代码,帮助读者在理解FOC控制核心算法的基础上,快速掌握工程仿真与调试技巧。

weixin_29074295的博客 281

每日一题之 hdu 2089 (数位dp)

杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之...

城南花开的专栏 486

中国30米分辨率城市建成区数据集 (1972-2023年)

全国城市建成区空间分布数据(1972-2023年),利用Google Earth Engine平台,基于Landsat系列遥感影像提取了1972–2023年城市不透水面,后经过不透水面聚集密度计算方法计算了不透水面聚集密度,通过阈值划分提取了城市建成区,并设置了建成区面积阈值,去除了噪点,获取了全国城市建成区空间分布数据集。该提取能准确刻画城市形态,提取精度高,保持了建成区的完整性。数据集包括41期数据,1972年,1978年,1985-2023年逐年,分辨率为30米,有栅格和矢量两种格式。

地球资源数据云的官方博客 5824

DQN网络代码调用env.reset()后存储观测信息报错问题ValueError: setting an array element with a sequence.解决处理

**reset()函数返回的是一个array类型以及其中数据的type!模拟游戏进行学习任务。因此需要将observation指定为真正需要的array信息即可,得到的的变量observation类型与Agent存储时的。因此怀疑返回的observation有问题,于是通过。报错信息提示为数据维度不对应,也即最初通过。在强化学习DQN网络代码实现过程中,针对。

Vulcan_Q的博客 4092

C++ Vjudge 训练题

文章目录1、不要62(数位DP)2、 1、不要62(数位DP) 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号码。但是,6115...

锵锵锵锵蒋的博客 1618

【ROS机器人系统】自主导航+YOLO目标检测+语音播报

完成自主导航功能,并在小车移动至指定地点的过程中,通过机器人的摄像头检测导航途中所见物体,识别出物体的种类(框选出不同物体并标注识别结果),结合科大讯飞语音合成模块对识别结果进行语音播报。..............................

南京大学软件工程硕士在读 2万+

数位DP-->不要62

【题目描述】 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了。这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如,62315,73418,88914都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。 你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。

hnjzsyjyj的专栏 909

基于YOLOv8的工业瓷砖缺陷检测:深度学习与UI界面的应用

本文详细介绍了如何使用YOLOv8进行工业瓷砖缺陷检测,并结合图形用户界面(UI)提供了完整的实现方案。通过YOLOv8模型,我们可以高效、精确地检测瓷砖图像中的缺陷,显著提高生产过程中的质量控制水平。随着数据集的进一步扩展和YOLOv8模型的不断优化,未来瓷砖缺陷检测的精度和速度将不断提高。此外,基于深度学习的缺陷检测技术不仅可以应用于瓷砖生产,还可以推广到其他领域的质量检测中。

YOLO 604

第170篇 因子图优化入门——图模型在状态估计中的应用

本文系统介绍了从滤波方法到因子图优化的思维转变,重点解析了因子图的原理与应用。首先对比了递推式滤波(卡尔曼滤波等)与全局优化的区别,指出优化方法能利用所有信息且适合处理稀疏结构。然后详细阐述了因子图的二部图结构(变量节点和因子节点)及其将复杂概率分布分解为小因子乘积的优势。文章讲解了因子图优化如何转化为最小二乘问题,并介绍高斯-牛顿法和LM方法等求解技术。最后对比了g2o、Ceres和GTSAM三大主流框架的特点及适用场景,强调了初始化和鲁棒核函数的重要性,为SLAM相关面试提供了实用建议。

郑伟强dev的专栏 374

不要62(HDU-2089)(数位DP模板题)

杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。 你...

菜鸡的博客 1630

手把手教你学simulink实例--基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台

电动汽车的动力总成(Powertrain)是车辆的核心系统,包括动力电池、电机控制器、逆变器和驱动电机等关键部件。动力总成的控制策略直接影响车辆的动力性能、能耗效率和驾驶体验。为了验证和优化这些控制策略,基于MATLAB/Simulink的仿真平台成为一种高效且经济的解决方案。本项目旨在构建一个完整的基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台,涵盖控制策略建模、性能评估以及参数标定等功能模块,并通过仿真验证系统的有效性。

MHD0815的博客 299

HDU 2089 不要62(数位dp)

题目链接:HDU 2089 不要62 数位dp。 听大神说这是数位dp最基础的题目,学习中。 感觉做这类题目用记忆化搜索比递推来的清晰。 #include #include using namespace std; const int MAX_N = 10 + 5; int dp[MAX_N][2]; int num[MAX_N]; int n,m; int f(int pos,

fobdddf的专栏 716

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

DP - 数位DP - SCOI 2009 - Windy数 + HDU 2089 - 不要62

DP - 数位DP - SCOI 2009 - Windy数 + HDU 2089 - 不要62 文章目录DP - 数位DP - SCOI 2009 - Windy数 + HDU 2089 - 不要621、SCOI 2009 - Windy数2、HDU 2089 - 不要62 1、SCOI 2009 - Windy数 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2...

njuptACMcxk的博客 250

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU 2089 不要62

HDU 2089 不要62 题目链接 题目大意: 给定一个区间,求区间有多少个数满足下列条件: 数字没有出现连续的 62 数字中没有出现 4 有多组测试数据 思路: 直接暴力模拟是超时,因为有多组。 这题也是数位dp的一道简单题, 所以可以直接数位dp做 代码: #include <bits/stdc++.h> using namespace std; #define me(a, b) memset(a, b, sizeof(a)) #define IOS() ios::sync_with_

想学开哥的博客 203

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDU2089不要62

题目链接:HDU2089不要62 这道题目没有做出来,看来题刷的还不够。问题大致意思是:给出整数区间,求出在区间中的数不含4和62的个数。 一开始我觉得这道题目挺简单的,一来就暴力求解,结果超时,实在不知道怎么改,后来参考了大佬的初学数位DP–hdu 2089才对数位dp有所了解。 下面我们以[ 0 , 3548 ]这个区间来了解数位dp 这与数位区间有关,不能暴力求解,必须在数位上进行递推操作等。 要知道:两个数在进行比较时,我们是从两个数的高位到低位的顺序(如果顺序相反则不行)依次进行比较,当一个数a的

HXZ_CREATE的博客 424

不要62 HDU - 2089 (数位d'p)

不要62 HDU - 2089 题意:给出L和R,问在L到R区间内有多少数,数内没有4和62. 思路:这道题的数据范围不是很大,可以直接打表,但是也可以按照数位dp的做法,p[len]记录数的每一位。dfs()进行搜索,len表示当前到哪一位,six表示前一位是不是6,flag判断这个数是不是边界数,记录已经搜索的dp[len][six]. 对于搜索2358 当前在3的时候 对于那个fo...

DeathYmz的博客 1459

数位dp——hdu2089不要62

刚开始接触数位dp,看其他的博客和教程也不是很懂,不过学习就是一个循序渐进的过程嘛๑乛◡乛๑ 下面简单写写入门级的hdu2089不要62 中途找到一个比较好的ppt,我觉得讲的还是很清楚的了->初探数位dp (下面的过程咋一看不明白可以把中间的过程打印出来,我是这样做的,感觉初学很见效) 1、预处理 dp[i][j]代表首位为j的i位数里符合条件(不含62和4)的数的个数...

weixin_30745553的博客 68

【数位DP】 hdu2089 不要62

不要62 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:问在n,m之间不含4和62序列(4和62为不吉利数)的数字有多少个。 题解:把状态分为3种,1)不包含不吉利数且末位不为6。2)不包含不吉利数且末位为6。3)包含不吉利数。 状态转移见代码注释。              ps:不看讨论说这题打表也能过。 代码: #i

Ted's 游乐园 4768

数位DP入门 —— hdu2089 不要62

数位DP是一种用来计数的DP, 如果给你一道题, 让你去统计区间[l, r]之间满足某种条件的数字个数, 在没接触数位之前很容易想到的就是暴力判断。但当数据范围较大时这种方法就不可行了, 这时候我们就可能要用的差分的思想确定一个递推关系, 来更方便更高效的求解, 这就是数位DP。这种理论的东西可能写出来帮助不大, 数位DP的思想是通过自己对问题的思考逐渐建立的, 下面是我选的一个例题来帮助初步理解...

Kruskal的博客 497

HDU 2089 不要62(数位dp)

目录问题分析状态转移从低位到高位从高位到低位状态设计位最大值代码 问题 HDU 2089 不要62(数位dp) - https://acm.hdu.edu.cn/showproblem.php?pid=2089 分析 状态转移 从低位到高位 注意:图中的最高位是指当前已构造部分的最高位,并非指最终的最高位 #mermaid-svg-gT0VoKIyjP1R8RuS .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--me

jpphy0的博客 209

[hdu2089][不要62]

hdu2089 思路 数位dp模板题。从高位往低位进行搜索,用pos记录当前位置,lst记录上个位置的数字,bz记录上个位置是否是6,limit来记录上个位置是否达到了上界(如果达到了,就需要对当前位置的上界进行处理) 代码 #include<cstdio> #include<iostream> #include<cstring> using name...

diecimu4798的博客 86

【数位DP】HDU 2089 不要62

HDU 2089 不要62 题意: 求[n, m]中没有连续62并且没有4的数的个数。 其中n和m的范围是1e6 解: 其实最关键的部分就是dfs的部分。 首先我们将每个数位的值保存在一个数组里。 解释一下dfs参数的意义: pos:第几个数位。例如100,pos分别为2,1,0 pre:高一位数位的值。例如67,数位0的高一位数位是1,值为6。(它存在的意义是因为62连续是不合法的) st...

L_X_ 236

HDU 2089 不要62 [数位DP]

Description输入 N,M 输出 N~M中不含62和4的数有多少个Algorithm数位DP 预处理 F F[i][j]表示 i位数 开头为j的 满足条件的个数 状态专业 F[i][j] = F[i - 1][k] k = 0..9 并且满足 j != 4 j != 6 && k != 2 这样就预处理好了 我写在了init里面 对于每个数 X 把X每一

more time 168
上一篇: LightOJ 1027 A Dangerous Maze
下一篇: hdu 4722 Good Numbers
LBJHan
博客等级 码龄9年 35粉丝 391原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值