HDU 2089 不要62

CSP-J 复试考点 可以用来训练思维,对于学习时间短的同学,动态规划可以帮助你迅速进入编程状态,也有助于帮你发现题目背后可能隐藏的更简便的算法。动态规划、贪心都是和子问题相关的,动态规划的基本思想是将一个大的问题划分成子问题,接着分别求解,而且能够将一些重复的计算记忆化,大大提高效率。难度加大,会涉及到二分、动态规划之类的算法,容易遗漏考虑点,不易得全分,考试的时候要注意全面性。一般是压轴题,算法不明显,剪枝的搜索、动态规划、状压 DP、树形 DP 、树、图等。枚举算法是指,列举出所有可能的取值,从中找出最优解。 阅读详情

传送门

数位dp。
给一个左闭右闭区间,统计个数。

dp[i][j]表示当前从第i位枚举到最低位(第0位)、在j状态下符合条件的个数。
j表示第i+1位是不是6。

初识数位dp,说几点看法。

  1. 之所以要设计这么个dp数组,就是为了重复利用(记忆化搜索)。不这么干的话,每种i,j的组合都可能要被计算多次。现在只用第一次计算,然后再碰见这样的i,j组合就不用再算了。
    当然,前提是不在limit模式下。
  2. 怎么设计这个dp?
    一般来说第一维都是表示pos,其他维度表示状态。这个状态一般是指最高位到第i+1位形成的一种前置状态,用来限制后续数位的生成。
    当不在limit模式下,要保证对于每一个可能的i,j组合,dp[i][j]的值都已经被定死了。
  3. limit模式的意思?
    solve(x)回答的的是[0,x]这个区间内的个数,limit用来限制这个数位的生成过程:不能超过x。
    可以想到,随着dfs从高位到低位,有一条调用链正好生成了x,并且其中每一步都是limit模式。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;     // 数位dp模板

int n, m;
int dp[6][2];            // 无限制下,当前从第i位枚举到最低位(第0位)、符合条件的个数,j表示第i+1位是不是6。【可重复利用】
string num;

int dfs(int pos, int status, bool limit)
{
	if (pos == -1) return 1;
	if ((!limit) && (dp[pos][status] != -1)) return dp[pos][status]; // 记忆化搜索,重复利用

	int cnt = 0;
	int up = (limit ? (num[pos] - '0') : 9);                         // 这里num[]是字符
	for (int i = 0; i <= up; i++)
	{
		if (i == 4) continue;
		if ((status == 1) && (i == 2)) continue;
		cnt += dfs(pos - 1, i == 6 ? 1 : 0, limit && (i == up));     // 第三个参数都这么写
	}
	if (!limit) dp[pos][status] = cnt;
	return cnt;
}

int solve(int x)                         // 统计的是 0~x 符合条件的个数
{
	num = to_string(x);
	reverse(num.begin(), num.end());
	return dfs(num.size() - 1, 0, true);
}

int main()
{
	memset(dp, -1, sizeof dp);           // "约束条件是每个数自身的属性,而与输入无关" https://blog.youkuaiyun.com/wust_zzwh/article/details/52100392  
	for (; ~scanf("%d%d", &n, &m);)
	{
		if (n == 0 && m == 0) break;
		printf("%d\n", solve(m) - solve(n - 1));
	}

	return 0;
}
python实现纵横向拉开档次法 (附完整源码) 阅读详情

相关推荐

2025年春科研论文写作指导(如何写好科研论文)研究生网课期末考试

希望能帮助到大家

beijieweiyu的博客 5789

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

从AND到XOR:5种门控电路在PrimeTime中的检查策略差异

本文深入探讨了AND、NAND、OR、NOR和XOR五种门控电路在PrimeTime静态时序分析中的检查策略差异。重点解析了XOR门控因其非单调性而无法被工具自动推断,需要工程师手动配置的特殊性,并提供了针对各类门控的配置模板与调试技巧,以确保时钟网络的完整性与芯片设计的可靠性。

rgv2345678的博客 269

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

从菜鸟到高手:我的Abaqus壳单元S4R、S3R、S8R选择心路历程

第一次打开Abaqus的单元库时,我被琳琅满目的壳单元类型晃花了眼。S4R、S3R、S8R、STRI65、S9R5...这些看似随意的字母数字组合,背后却隐藏着影响仿真精度的关键密码。作为一名从土木工程转行到汽车结构仿真的工程师,我花了三年时间才真正理解如何根据问题特性精准选择壳单元。这段学习历程充满试错与顿悟,今天就用几个关键案例,分享我的壳单元选择方法论。

weixin_42525637的博客 418

从零到一:RF-DETR如何通过神经架构搜索重塑实时目标检测的边界

RF-DETR通过创新的权重共享神经架构搜索(NAS)机制,重新定义了实时目标检测的技术边界。这项技术在COCO等基准测试中表现卓越,成为首个AP超过60的实时检测器,同时保持跨领域稳定性和高效推理速度。RF-DETR的动态架构调整能力使其能够适应从嵌入式设备到云端服务器的各种硬件环境,为工业质检、自动驾驶等场景提供灵活解决方案。

weixin_29061531的博客 469

不要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

逆向实战:手把手教你用Frida绕过Flutter App的SSL Pinning(附脚本修改指南)

本文详细介绍了如何利用Frida工具绕过Flutter应用的SSL Pinning保护机制,包括静态分析定位关键函数、定制Frida Hook脚本以及流量捕获的完整解决方案。通过实战案例和脚本修改指南,帮助安全研究人员有效应对Flutter应用的安全挑战,特别适用于安卓平台的逆向工程和抓包需求。

weixin_28723171的博客 404

HDU2089不要62

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

HXZ_CREATE的博客 424

IBM AC922 8335-GTW 安装linux,CentOS,ubuntu,RHEL各种坑

AC922

u011970286的专栏 894

基于 YOLOv26 的高速抛物识别系统:微小目标检测

本文提出了一种基于YOLOv26的高速抛物识别系统,专注于微小目标检测。系统采用多模块协同架构,包括视频预处理、YOLOv26检测、目标跟踪和抛物行为分析等模块。关键技术包括YOLOv26s模型检测、DeepSORT目标跟踪和边缘计算部署。通过构建包含多种抛物类型的专业数据集,并应用数据增强技术提升模型性能。系统实现了车辆检测、微小抛物目标识别、抛物轨迹分析和风险等级评估等功能,可实时检测高速公路上的抛物行为并触发告警,为交通管理提供智能化解决方案。

一键难忘的博客 632

【数位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

AHB—SRAMC项目(结构图,核心代码、Testbench架构)

文章目录一、AHB_SRAMC项目介绍1.1.AHB总线控制单元(ahb_slv_if.v)1.2.SRAM控制单元(sramc_top.v)1.3.主要的传输路径二、结构框图2.1.AHB_SRAMC结构图(重点)2.2.总线控制单元与SRAM控制单元结构图三、部分核心代码(重点理解)四、SystemVerilog Testbench架构(重点)五、目录结构 一、AHB_SRAMC项目介绍 本项...

Mr.翟的博客 3万+

数位dp——hdu2089不要62

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

weixin_30745553的博客 68

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数位DP入门 —— hdu2089 不要62

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

Kruskal的博客 497

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

WINCC7.3破解文件

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

hdu 2089 不要62

不要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(音

Sirius_han的博客 2903

[hdu2089][不要62]

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

diecimu4798的博客 86

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

【数位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 和上一题 : HDU3555很像 【代码】 #include<bits/stdc++.h> using namespace std; #define MAXL 10 long long n,m; long long a[...

148

HDU2089 不要62

HDU2089 不要62(数位DP) 数位dp就是在和数字内部相关性质有关的问题中, 数字太大,暴力求解不行时,把数字拆成一个个位进行动态规划的方法。 举例HDU2089 题意:对于每一组数据,给定区间,求出区间内部不含4,62的数字的个数 基础的数位DP题 首先显然,应该使用前缀和思想,对L,R分别求出从0开始的 pre[R] , pre[L - 1] 对于一个要求的数X,先对X进行拆分,...

qq_36867108的博客 270

HDU - 2089 不要62

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

Rainbow__sea的博客 391

不要62 HDU - 2089

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

Tizzi的博客 1027
上一篇: CCF CSP 201312 4.有趣的数
下一篇: HDU 3555 Bomb
Crossing over
博客等级 码龄10年 6粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值