数位dp 之 不要62(数位dp入门题)

Geant4学习——入门(基本概念、Geant4工具包的结构、强制类、可选类) Geant4是由欧洲核子研究组织基于C++面向对象技术开发的蒙特卡罗应用软件包,用于模拟粒子在物质中输运的物理过程。由于具有良好的通用性和扩展能力,Geant4在涉及微观粒子与物质相互作用的诸多领域获得了广泛应用。 第一部分 Geant4的基本概念 HEP中的模拟是“虚拟现实”。仿真既可用于在研发阶段帮助设计探测器,又可用于物理研究中了解探测器的响应。为了创建这样的虚拟现实,我们需要对粒子间的相互作用,几何形状和材料进行建模,以便将基本粒子传播到检测器中。我们还需要描述检测器生成原始数据的灵敏度。 Gea 阅读详情

数位dp 之 不要62(数位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

Author
qianneng

Source
迎接新学期——超级Easy版热身赛

Recommend
lcy

题意:
这道题给你一个区间[ l , r ],让你去统计这个区间内不含62,和4的吉利数字的个数。

思路:
这道题,是典型的数位dp题。具体的看代码,代码中有注解。

//  数位dp做法
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
int a[20];
int dp[20][2];//不太适用于整体判断
int dfs(int pos,int sta,bool limit)
//sta代表前一位是否是6的状态
//limit代表它前一个数是否达到上界 如果前一个数达到上界则,这个位置上的数它的上界是它原本数在这个位上的值,若无则其上界为9;
//举例:213 ,如果我百位上取2,那么十位上只能枚举0~1,如果我百位上只取0~1,那么我十位上的数能从0举到9 //从最高位往下枚举
{
    if(pos==-1)
        return 1;//pos=-1 说明它只有1位数
    if(!limit&&dp[pos][sta]!=-1)  
        return dp[pos][sta];//代表这个已经计算过了,可以直接利用
    int up = limit ? a[pos] : 9;//up代表这个位置上的上界。理解这句话可以看上面的limit的解释
    int tmp = 0;//tmp代表个数
    for (int i = 0;i<=up;i++)
    {
        if(sta&&i==2)//如果前一位置是6,现在的是2,这符合条件,不管他 HVH
            continue;
        if(i==4)//如果是4,也不管他 HVH
            continue;//都是保证枚举的合法性
        tmp += dfs(pos - 1,  i == 6, limit && i == a[pos]);
    }
    if(!limit)
        dp[pos][sta] = tmp;//计算完了,记录状态
    return tmp;
}
int solve(int x)
{
    int pos = 0;//pos 代表x这个数共有几位
    while(x)
    {
        a[pos++] = x % 10;
        x /= 10;
    }
    return dfs(pos - 1,  0, true);//pos-1代表的是x的最高位。
}
int main()
{
    int le, ri;                       //le为左边界,ri为右边界
    // memset(dp, -1, sizoef dp);    可优化
    while(~scanf("%d%d",&le,&ri)&&le+ri)  //输入
    {
        memset(dp, -1, sizeof dp);    //初始化
        printf("%d\n", solve(ri) - solve(le - 1));
        //solve(n) 函数用来计算1到n中不符合条件的个数
        //数位dp将位数从高位向低位一个一个枚举出来 来计算的
    }
}

这道题也可以用打表做(因为数据比较小,只有1000000,不用担心会超时),看一个数组sum,去统计1~1000000之间,各个数从1开始到其本身不含62和4的数的个数,然后有用前缀和,所得答案=sum[ r ]-sum[ l - 1];具体代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1000005;
int ah[maxn];
void init()
{
    ah[0] = 0;
    for (int i = 1; i <= 1000000;i++)
    {
        int flag = 1;
        int t = i;
        int last = 0;
        while(t!=0)
        {
            int a = t % 10;
            if(a==4||(a==6&&last==2))
            {
                flag = 0;
                break;
            }
            last = a;
            t = t / 10;
        }
        if(flag)
        {
            ah[i] = ah[i - 1]+1;
            // printf("ok:%d  %d\n", i,ah[i]);
        }
        else
            ah[i] = ah[i - 1];
    }
}
int main()
{
    init();
    int n, m;
    while(scanf("%d%d", &n, &m)&&n&&m)
    {
        printf("%d\n", ah[m] - ah[n - 1]);
    }
}   //打表枚举+前缀和 区间为[l,r];a数组存放的是从1开始其符合的个数,那么这道题要算的值必然为a[m]-a[n-1];

打表和数位dp的区别,打表是从低位向高位走(个,十,百,千·······),数位dp是从高位到地位(亿,千万,百万,十万,万······),打表适用于数据范围较小的题目,不然很容易TLE。

我正用AI Agent重构传统GIS 核心功能,说大白话做空间分析 GeoAI-UP项目通过AI Agent技术实现自然语言驱动的空间分析,核心创新包括: 意图识别层:通过LLM理解用户需求,自动拆解为可执行目标 智能任务规划:动态生成分析流程,处理复杂依赖关系 统一算子架构:采用标准化接口封装200+空间分析功能 可视化工作流。 阅读详情

相关推荐

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3774

不要62(数位dp普通写法和模板写法)

多组数据,每次给定区间[n,m],求在n到m中没有“62“或“4“的数的个数。 如62315包含62,88914包含4,这两个数都是不合法的。0&lt;n&lt;=m&lt;1000000 //https://blog.youkuaiyun.com/zhangxian___/article/details/75304335 假设我们现在把x分成了a1,a2,...,aL这样一个数组,长度为L,aL是最高...

lanshan1111的博客 4159

inferCNV包安装问题及解决办法

InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager:

m0_51042606的博客 6803

AcWing 1085. 不要62(数位dp)

题意: 定义 不吉利的数字 为所有 含有 4 或 62 的号码。 例如:62315,73418,88914 都属于 不吉利号码。 但是,61152 虽然含有 6 和 2,但不是连号,所以属于 吉利数字 之列。 给定区间 [a, b],问其中有多少个 吉利数字? 思路: 本题和之前几道数位dp的题目思考方式类似, 假设 数字 num 当前枚举到第 i 位,且 第 i 位数字是 x,那么对于 答案的第 i 位数字 j 来说,有 两种填法: 1.0 ~ x - 1 用 last 表示 num 中第 i ...

Jacob0824的博客 883

工作中SVN的使用,保姆级教程!

SVN是一款集中式版本控制系统,采用客户端-服务器模式管理代码版本。与Git相比,SVN在目录权限控制、大型二进制文件处理等方面具有优势,适合特定场景使用。本文介绍了SVN的安装方法、基本操作(检出、提交、更新、回滚等)以及分支管理(创建、合并、切换)。同时讲解了文件冲突的解决方法,并演示了如何在IDEA中集成SVN工具。SVN虽然逐渐被Git取代,但在某些特定场景下仍是可靠选择,工具选择应基于团队和项目需求。

胜人者有力,自胜者强! 1851

STM32单片机:驱动ADS1115四个通道全开程序

本文介绍了德州仪器(TI)的ADS1115高精度16位模数转换器(ADC)及其应用实现。该芯片具有16位分辨率、可编程增益放大器(PGA)和低功耗特性,支持±0.256V至±6.144V量程。文章提供了完整的C语言驱动代码,包括初始化、配置寄存器读写、单次/连续转换模式设置、电压值读取等功能实现。代码通过I2C接口与ADS1115通信,支持多通道选择和不同PGA设置,可实现高精度模拟信号采集。该方案适用于需要精密测量的嵌入式系统,如传感器数据采集等应用场景。

weixin_42122070的博客 689

数位DP-->不要62

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

hnjzsyjyj的专栏 909

山景BP10_128DBG开发板ADC_Key驱动

最近在学习山景BP10_128DBG开发板,想使用开发板上的按键。看了看原理图和之前用过的按键好像有点不一样。常见的按键都是判断IO口是否被拉低或拉高来判断按键是否被按下。山景BP10_128DBG开发板上的按键是ADC按键,每个按键按下之后ADC的采样值是不同的,通过ADC采样回来的值进而判断哪个按键按下。这种方式核心思想就是用一个ADC通道来节约IO口,对于IO紧张的芯片是一个不错的解决思路。

weixin_56646002的博客 1310

HDU 2089 不要62(数位DP入门)

题目链接:Click here~~ 题意: 统计区间 [a,b] 中不含 4 和 62 的数字有多少个。 解题思路: dp[len][0] 表示长度为 len 的数字不含 4 和 62 的个数。 dp[len][1] 表示长度为 len 的数字不含 4 和 62 但首位不为 2 的个数。 状态转移方程为:dp[i][0] = 8 * dp[i-1][0] +

nyist_xiaod 1万+

UE5 蓝图节点图文大全(300+蓝图,9万字+)

本文采用虚幻5.2.1版本,以图文的方式对蓝图节点进行介绍,包括蓝图节点的输入输出参数解释,并有中英文节点名称可参考。

一碗清深的博客 2万+

【AI智能体】Claude Code 高级编程技巧实战项目详解

Claude Code 高级编程技巧实战项目详解

congge 1万+

C++ hdu 例题:不要62 题解

例题:不要62 同步数位DP 需要统计区间[l,r]的满足题意的数的个数,这往往可以转换成求[0,r]-[0,l) 基本思想与方法 有了上述性质,我们就可以从高到低枚举第一次<n对应位是哪一位。 这样之前的位确定了,之后的位就不受n的限制即从00...0~99...9,可以先预处理,然后这时就可以直接统计答案。 预处理F数组。 F[i,st] 代表 位数为i(...

weixin_30265171的博客 628

IP-Guard安全网关实例

企业相关情况: 1.OA系统,主要为日常工作使用,该系统IP为192.168.1.2,端口为8080; 2.文件共享服务器,用于存放日常工作资料和文档,该文件共享服务器的IP为192.168.1.1,其中\\192.168.1.1\private 目录中的存放着公司重要文档,不能随意外传; 3.安全网关已采用串联的方式联入网络,IP为192.168.2.6,所有机器访问OA系统和文件共享服务...

IP-Guard专栏 706

hdu 2089 不要62 数位DP入门题

重新学数位DP,这次准备学到进阶,至少可以做多校的数位DP的程度。 数位dp跟普通dp一样。 不过阶段变成了数位,状态变成了每一位的取值限制。 用dfs递归+记忆化的方式完成状态转移。 时间复杂度为:dp的数组大小*转移复杂度(一般为10) #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5+7; ll di[60]; ll dp[60][2]; //d..

bjfu170203101的博客 231

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【动态规划】数位DP入门题:不要62

题目链接:LibreOJ 不要62 解题思路:数位dp入门题目,数位dp是存在有模板的,可以通过一道题来领悟数位dp的思路。详细分析将放在代码中解释。 //#pragma GCC optimize(2) #include<iostream> #include<iomanip> #include<cstdio> #include<string> #include<algorithm> #include<cmath> #include&lt

qq_49688477的博客 338

efm32 入门.pdf

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

hdu2089 不要62 数位dp入门题

不要62  Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 57892    Accepted Submission(s): 22717 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)...

cloudy_happy的博客 244

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HDU - 2089 不要62 (数位dp入门题+两种思路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题目大意:求在一定范围内,不含62和4的数的个数。 思路一:裸的数位dp,可直接用dfs记忆化搜索。 AC代码: #include<iostream> #include<cstdio> #include<cstring> #include<...

weixin_44757834的博客 481

HDU 2089 不要62 (数位dp入门题)

不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 36331    Accepted Submission(s): 13246 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音

K键盘里的青春K 673

HDU 2089 不要62【数位DP入门题】

不要62 Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 56193Accepted Submission(s): 21755 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州...

weixin_33836874的博客 77

hdu2089不要62 (数位dp入门题)

开始看了很久不是很理解数位dp模板的用法,看了好理解的写法,模范写了一下,理解一点数位dp怎么定义和状态转移。 dp[len][k]:从0到表示长度为len首个数字为k的数字串有满足条件的数量。 那么转移方程很好想。#include<bits/stdc++.h> using namespace std; int dp[10][10]; void init(){ memset(dp,0,si

笔记 1066

数位DP入门题——[hdu2089]不要62

数位DP是我的噩梦。 现在初三了,却没AC过数位DP的题目。 感觉数位DP都是毒瘤…… 题目 hdu不用登录也可以进去,所以就不把题目copy...

weixin_30940783的博客 275

HDU2089 - 不要62 【数位dp的入门题】

不要62Time Limit: 1000/1000 MS (Java/Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 50740&nbsp;&nbsp;&nbsp;&nbsp;Accepted Submission(s): 19247Problem Descri...

nobleman 564

【HDU2089】不要62(数位DP入门题)

Description 给定mmm,nnn,求mmm到nnn的所有整数中及不含’4’也不含’62’的数的个数。 Solution 直接数位DP即可。。。 Source /**************************** * Au: Hany01 * Prob: [HDU2089] 不要62 * Date: Feb 19th, 2018 * Email: hany01@...

დ♂Hany01's Blog Space♂ღ 282

HDU - 2089 不要62 解题报告(数位dp)(入门题)

目录题目描述思路分析完整代码 题目描述 https://vjudge.net/problem/HDU-2089 思路分析 数位dp第一题,方法是打表+按位求ans。 首先题目有点说不清楚,他求的应该是[m,n]闭区间的数字中符合条件的。 先说打表,我们定义一个dp矩阵,dp[i][j]表示i位数,以j为开头数字的符合要求的数的个数。比如:我们以求[0,324]中的数字个数为例子。我们需要处理一下信...

nagisa2019的博客 527

hdu2089 不要62--数位dp入门题

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:给定a,b两数,求两数之间所有数不含有62和4的个数。 分析:dp[ i ][ j ]表示i位数,最高位是j的满足题意的个数。 if (cnt[i] == 4 || (cnt[i] == 2 && cnt[i + 1] == 6)); break;

半壶老酒 623

HDU-2089 不要62 (数位dp 入门题)

数位dp的一道入门题。题意:1e6的数字范围,问有多少个数字的数位中不包含4和连续的62。

hmc0411的博客 677
下一篇: 数位dp 之beautiful numbers(kuangbin带我飞之数位dp)
kitalekita
博客等级 码龄7年 24粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值