数位DP小记 + HDU 2089 不要62

ue4 角色奔跑/冲刺/蹲下 /蹲走 动作切换蓝图 序列:文章分为4部分: 一、准备工作+简单的蓝图连线 二、编写“行走” 混合空间 三、编写“蹲下”混合空间 四、合成2个动画,设置动画蓝图 —————————————— 一、准备工作 下载“动画初学者包”,添加到项目! 主要文件: 打开BP_playerCharacter,组价——添加组件,找到“摄像机”,“机臂” 没有找到就去其他项目复制过来 ———————————— 手写人物的移动,也可以在... 阅读详情

【背景】

如何求出在给定区间[A,B]内,符合条件P(i)的数i的个数?
条件P(i)一般与数的大小无关,而与 数的组成有关,有一下几种P(i):
数i是递增/递减的:1234, 2579,…
双峰的:19280,26193,…
含/不含某一数字的,比如含49:49, 149, 1492,…  (见下方例题)
被某一数m整除的,比如m=13:39,130,650...  (见 Codeforces 410D Roman and Numbers )

【思路】

采用记忆化搜索实现。

搜索:dfs(i,j,k,ismax)

枚举第i位的数,匹配str[j],前一位是k,是否达到上限(ismax=true/false)
达到了上限只能统计cnt=sum(0~num[i]),否则可以统计cnt=sum(0~9)
记忆:return ismax ? cnt : dp[i][j][k] = cnt
为何这么做见下方代码注释
搜索入口:dfs(len,-1,-1,true)

【例题】


这题的P(i)是不含有4和62的数,那么只需dfs(i,is6,ismax)即可,表示当前搜索到第i位,前一位是否为6(因为要判断后面那个是否为2),是否达到上限。记忆dp[i][ismax],搜索入口为dfs(len,false,true)


完整代码:

/*15ms,232KB*/

#include<cstdio>
#include<cstring>
const int mx = 10;

int bit[mx], dp[mx][2];

///复杂度O(log n)
///若ismax为true则后面循环的时候i只能取0~bit[len]
///is6记录上一位是否为6
int dfs(int len, bool is6, bool ismax)
{
	if (len == 0) return 1; ///能递归到这里说明这串数符合要求,返回1
	if (!ismax && dp[len][is6] >= 0) return dp[len][is6];
	///若ismax为true,则还需要继续向下递归
	///为什么?对于n=5321来说,递归中的2xxx和3xxx可以直接在len=3时返回(因为xxx这颗子树已经被前面的1xxx算出来了)
	///但是在算5xxx时并不能直接返回,因为后面的xxx至多能取到321,还需要进一步往下递归
	int cnt = 0, maxnum = (ismax ? bit[len] : 9);
	for (int i = 0; i <= maxnum; ++i)
	{
		if (i == 4 || is6 && i == 2) continue; ///不能有4,或者前一位为6且该位为2
		cnt += dfs(len - 1, i == 6, ismax && i == maxnum); ///ismax && i == maxnum 用来判断是否达到位值上限
	}
	return ismax ? cnt : dp[len][is6] = cnt; ///根据ismax来决定是否记录dp(比如dp[3][1]记录的是6xx的所有数,即从600到699中的符合条件的数的个数)
}

int f(int n)
{
	int len = 0;
	while (n)
	{
		bit[++len] = n % 10;
		n /= 10;
	}
	return dfs(len, false, true); ///从首位开始递归统计
}

int main()
{
	int a, b;
	memset(dp, -1, sizeof(dp));
	while (scanf("%d%d", &a, &b), a)
		printf("%d\n", f(b) - f(a - 1));
	return 0;
}


转载请注明:http://blog.youkuaiyun.com/synapse7/article/details/21006265

基于ROS2系统开发机器人 以上是基于ROS 2开发机器人的基本流程和一个简单的发布者-订阅者示例。通过这个流程,你可以逐步扩展和优化你的机器人系统,实现更复杂的功能。 阅读详情

相关推荐

向量库深度解析:选型、索引原理与生产实践

本文系统解析五大主流向量库(pgvector、Milvus、Weaviate、ChromaDB、Faiss)的定位、优缺点与适用场景,深入拆解FLAT、IVF、HNSW等核心索引原理,并重点分析Milvus的Compaction机制。针对数据治理场景,提供精准选型建议:中小规模优先pgvector或Weaviate,超大规模选择Milvus,开发测试推荐ChromaDB。核心索引推荐HNSW,兼顾检索速度与召回率。全文从理论到实践,为开发者提供清晰的向量库选型逻辑与生产落地指南。

a123147abc的博客 360

[HDU - 2089] 不要62 (动态规划 && 数位dp)

Link:http://acm.hdu.edu.cn/showproblem.php?pid=2089 不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 50093    Accepted Submission(s)

Hello Joanna 512

水文地质人必备:用Origin Pro 2023手把手教你搞定Piper三线图(附数据模板)

本文详细介绍了如何使用Origin Pro 2023绘制专业级Piper三线图,适用于水文地质数据分析。从数据准备、百分比计算到图表参数设置,提供全流程指导,并附赠数据模板和样式预设文件,帮助用户快速掌握这一水文地球化学分析的核心工具。

weixin_30568591的博客 533

HDU 2089 不要62(数位DP,三种姿势)

HDU 2089 不要62(数位DP,三种姿势) ACM 题目地址:HDU 2089 题意:  中文题意,不解释。 分析: 100w的数据,暴力打表能过先初始化dp数组,表示前i位的三种情况,再进行推算直接dfs,一遍搜一变记录,可能有不饥渴的全部算和饥渴的部分算情况,记录只能记录全部算(推荐看∑大的详细题解Orz) 代码:  1. 暴力 (以前写的)

水果君の日常 9355

揭秘Synopsys EDA中的AI黑科技:DSO.ai如何改变传统芯片设计流程

本文深入探讨了Synopsys EDA中的AI黑科技DSO.ai如何革新传统芯片设计流程。通过数据驱动的方法论、功耗优化革命和时序收敛智能加速,DSO.ai显著提升了设计效率和质量,实现了从经验驱动到AI驱动的范式转变。文章还提供了实战指南,帮助团队跨越AI EDA的实施鸿沟。

weixin_29296241的博客 525

Blender - Shrinkwrap - 更方便的制作贴合模型的表面来建模

Shrinkwrap 修改器 使用 Blender 想要快速建模可以贴合现有模型表面的效果:衣服、皮肤、等效果,可以使用 Shrinkwrap 修改器,这个修改器的名字其实按照英文上的理解,翻译为:收缩的包裹效果 应用 如这块铁皮,它要贴合机身弯曲的效果,可以先建好一个铁皮,再 Shrinkwrap 到一个指定的网格上 留意的参数 Target 要贴合的对象(目前我已知是可以贴合到网格对象上,实在是方便) VertexGroup 顶点组,和之前讲到过的,顶点组可以组设顶点的权重,意思这个可.

Jave.Lin 的学习笔记 6068

几个基础数位DP (hdu 2089,hdu 3555 ,uestc 1307 windy 数)

转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents           by---cxlove 做了几个非常基础的数位DP,很水。弱爆了,接下来要进行进阶训练了 HDU 2089 不要62 http://acm.hdu.edu.cn/showproblem.php?pid=2089 不能出现4,或者相邻的62,这

窝不是爱酱,喵~~~~ 1万+

三菱MC协议(MC/TCP):避坑指南|C#实现三菱MC协议:软元件(X/Y/M/D)读写与帧格式解析

核心避坑逻辑:MC协议的坑80%集中在“PLC配置”“地址编码”“字节序”,先解决这三点,通信就成功了一半;实战优先级:新手优先用开源库(Mitsubishi.MCProtocol),避免手动拼接帧格式的复杂坑;进阶再研究帧格式解析;排坑技巧:先Ping通→用调试助手验证→写C#代码,分层排查,不要混在一起找问题。掌握这些避坑技巧后,你可以轻松实现C#与三菱全系列PLC的稳定通信,满足工业场景中数据采集、设备控制等核心需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2193

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

《Python基础教程》内容总览篇(持续更新中)

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为优快云博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。个人精心开设的《Python基础课程》专栏订阅量接近900,帮助不少同学解决了Bug。

weixin_43178406的博客 35万+

python+playwright 学习-10.pytest-playwright插件编写测试用例

pytest-playwright插件完美的继承了pytest 用例框架和playwright基础使用的封装,基本能满足工作中的常规需求了,不需要我们再做额外的插件开发。

qq_27371025的博客 2511

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

【深度学习】最强算法之:残差网络(ResNet)

一篇掌握深度学习算法之:残差网络

商务合作 | 面试培训 | 职场规划 ==>主页扫码 7837

[HDU-2089] 不要62(数位dp模板题)

题目链接: 不要62 大致题意: 给一个区间,统计区间中不含4和62的数字个数 解题思路: 对于1e9的数据,可以用数位dp来做 对于区间求个数,通常套路是dp®-dp(l-1)求[l,r]区间的数字个数 f[i][j] 表示填到第i位,当第i位填j的时候有多少种合适的数字 分解每一位,从最高位开始判断,累加上所有满足条件的数字个数 特判一下0 AC代码: #include<iostream> #include<algorithm> #include<cstring&gt

qq_49494204的博客 543

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数位DP入门 —— hdu2089 不要62

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

Kruskal的博客 497

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数位dp——hdu2089不要62

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

187

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

数位DP 记忆化搜索 不要62HDU2089(java实现)

数位dp数位dp = dfs + 记忆化主要思路HDU2089 AC代码 数位dp = dfs + 记忆化 主要思路 1.dfs本是暴力解决问题的一种方法,数位dp是利用动态规划是思想把以前搜索过的过程记录下来,如果到下一次需要这个结果是就可以直接返回这个值,不需要再从新计算了 2.一般我们是从高位往低位搜索,如果我们需要的结果dp数组里面有我们就不需要从新计算了,如果搜索到了个位就返回一(就是...

changaspl 589

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

HDU2089不要62

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

HXZ_CREATE的博客 424

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

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

数位DP——HDU2089 不要62

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2089 题目大意: 给定一个闭区间n-m,求取该区间中吉利数字的个数。吉利数字的定义为:不包含连续的数字62和数字4。(n,m 解题思路1: 由于m和n是小于100万的所以可以采用暴力打表的做法。 解题思路2: 典型的数位DP。 dp[i][0] 表示i位数

sanmingzi3344的专栏 1016

POJ3253 Round Numbers + HDU2089 不要62 —— 数位DP

POJ3253 :http://poj.org/problem?id=3252 HDU2089:http://acm.hdu.edu.cn/showproblem.php?pid=2089 数位DP: 题目的一般形式为:求 [ L, R ] 范围内满足限制条件的值的个数。 而 [ L, R ]  = [ 0 , R ] - [ 0, L-1 ] ,所以做法就是分别求出 在R

A man can be destroyed, but not defeated. 610

杭电不要62java,【Hdu2089】不要62(数位DP)

Description题目大意:给定区间[n,m],求在n到m中没有“62“或“4“的数的个数。如62315包含62,88914包含4,这两个数都是不合法的。0Solution数位DP,首先预处理数组\(F[i][j]\),表示位数为\(i\),开头为\(j\)时,满足条件的数的个数对于区间\([l,r]\)转化为求\([0,r]-[0,l)\)即可对于区间\([0,n]\)将n按位数存储分别计算...

weixin_33506900的博客 542

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

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

kitalekita的博客 744
上一篇: ZOJ 3762 Pan's Labyrinth (点集中的最大点-线距&技巧性枚举)
下一篇: Codeforces Round #235 (Div. 2) / 410D Roman and Numbers (带有整除性质的数位DP)
synapse7
博客等级 码龄14年 432粉丝 701原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值