B3626 跳跃机器人——洛谷(疑问)

题目描述

地上有一排格子,共 �n 个位置。机器猫站在第一个格子上,需要取第 �n 个格子里的东西。

机器猫当然不愿意自己跑过去,所以机器猫从口袋里掏出了一个机器人!这个机器人的行动遵循下面的规则:

  • 初始时,机器人位于 11 号格子
  • 若机器人目前在 �x 格子,那么它可以跳跃到 �−1,�+1,2�x−1,x+1,2x 里的一个格子(不允许跳出界)

问机器人最少需要多少次跳跃,才能到达 �n 号格子。

输入格式

仅一行,一个正整数,表示 �n。

输出格式

仅一行,一个正整数,表示最少跳跃次数。

输入输出样例

输入 #1复制

30

输出 #1复制

6

输入 #2复制

50

输出 #2复制

7

输入 #3复制

64

输出 #3复制

6

输入 #4复制

63

输出 #4复制

8

说明/提示

样例解释

第一组样例:
1→2→4→8→16→15→301→2→4→8→16→15→30

第二组样例:
1→2→3→6→12→24→25→501→2→3→6→12→24→25→50

第三组样例:
1→2→4→8→16→32→641→2→4→8→16→32→64

第四组样例:
1→2→4→8→16→32→31→62→631→2→4→8→16→32→31→62→63

请注意在本组样例中,6363 不能通过 64−164−1 得到,因为格子总数为 6363,没有第 6464 个格子。

数据规模与约定

对于 100%100% 的数据,有 1≤�≤10000001≤n≤1000000。

想法:

老想法,想用dfs写,超时了,还re了,应该可以写的吧dfs,本来只是想记录一下不知哪里看的”这题有后效性,dp写不了,dfs不知行不行“。结果还真整出来了,样例都过了。可能得记忆化一下???

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int ans=0,ret=0x3f3f3f3f;
int st[1000010];
void dfs(int x){
    if(x==n)  {
        ret=ans<ret?ans:ret;
        //cout<<ans<<endl;
        return;
    }
    if(st[x-1]==0&&(x-1)<=n&&(x-1)>=1){
        st[x-1]=1;
        ans++;
        dfs(x-1);
        st[x-1]=0;
        ans--;
    }
    if(st[x+1]==0&&(x+1)<=n&&(x+1)>=1){
        st[x+1]=1;
        ans++;
        dfs(x+1);
        st[x+1]=0;
        ans--;
    }
    if(st[2*x]==0&&x*2<=n&&x*2>=1){
        st[2*x]=1;
        ans++;
        dfs(2*x); 
        st[2*x]=0;
        ans--;
    }
}
int main(){
    cin>>n;
    st[1]=1;
    dfs(1);
    cout<<ret;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/359193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python开发常用的库汇总,附官网链接

文章目录 前言环境管理包管理包仓库分发构建工具交互式解析器文件日期和时间文本处理特殊文本格式处理自然语言处理文档配置命令行工具下载器图像处理OCR音频Video地理位置HTTP数据库数据库驱动ORMWeb 框架权限CMS电子商务RESTful API验证模板引擎队列搜索动态消息资源管理缓存…

12306提示人证核验失败问题解决方案

问题环境&#xff1a;手机已经 Root 并且安装了其他软件 认证时提示 官方客服回复: 可能是我的人脸发生了太大变化导致&#xff0c;建议我去身份证的公安部门更新人脸信息&#xff0c;但是想一想又不对&#xff0c;如果发生了大变化所有 App 使用的都是统一的公安部的人脸信息…

VitePress-06-文档中容器块的使用

说明 所谓的【容器块】就是在文档中标记出来的一块区域&#xff0c;在页面渲染的时候有自己的块样式。 主要就是通过背景颜色来与别的内容区分开来。 简单理解 &#xff1a;【容器块】就是一个 带有背景颜色的div。 容器块的定义 容器块由三部分组成 &#xff1a;类型,标题,内容…

指针进阶2

紧接着我们上一讲&#xff0c;指针进阶1&#xff0c;让我们趁热打铁&#xff0c;学习一下指针进阶2~ 一&#xff0c;函数指针数组 由第一讲我们可以知道&#xff1a;&#xff08;由于我们知道数组是存放一种类型的多个元素&#xff0c;若两个函数指针相同的话&#xff0c;那我…

LabVIEW直流电机转速检测与控制

研究了使用LabVIEW软件和ELVIS实验平台来检测和控制直流电机的转速。通过集成光电传感器和霍尔传感器&#xff0c;实现了对电机转速的精确测量和调节。 系统组成&#xff1a;系统由NI ELVIS实验平台、光电传感器、霍尔传感器和直流电机组成。通过这些硬件元件&#xff0c;系统…

Redis 安装 redistimeseries.so(时间序列数据类型)教程

配置步骤 1.下载 redistimeseries.so 文件 2.在 redis.conf 中增加配置 loadmodule /home/chenjian/redis-lib/RedisTimeSeries/redistimeseries.so DUPLICATE_POLICY LAST3.重启 Redis 服务 4.连接客户端&#xff0c;测试 RedisTimeSeries 相关命令&#xff0c;下图表明 R…

blender关于几何接近(geometry proximity)节点的理解

如图&#xff0c;可以见到&#xff0c;我输入了一个立方体&#xff0c;一个圆锥体&#xff0c;为了便于区分 &#xff0c;将原生的立方体与圆锥转为了曲线&#xff0c;而进行了几何接近处理的网格不进行此转换。 几何接近的输入端&#xff0c;分为target&#xff08;目标&…

STM32 CAN接口的配置和使用方法详解

STM32 微控制器提供了多个系列和型号&#xff0c;不同型号的芯片可能有不同的CAN&#xff08;控制器区域网络&#xff09;接口。在这里&#xff0c;我们以STM32F4系列为例来详细介绍CAN接口的配置和使用方法。 ✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和…

学习MySQL仅此一篇就够了(视图)

视图 介绍及基本语法 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视 图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xf…

STM32——看门狗

STM32——看门狗 1.独立看门狗IWDG 独立看门狗介绍 什么是看门狗&#xff1f; 在由单片机构成的微型计算机系统中&#xff0c;由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造成程序的跑飞&#xff0c;而陷入死循环&#xff0c;程序的正常运行被打断&#x…

你应该仅仅把useMemo作为性能优化的手段

文章概叙 本文主要通过几个简单的例子&#xff0c;讲解下useMemo这个hook&#xff0c;给诸君参考&#xff0c;也是给我自己做一个记录 关于useMemo useMemo是一个React Hook&#xff0c;它在每次重新渲染的时候能够缓存计算的结果。 相比于其他很常用的hook&#xff0c;如u…

父元素flex:1 高度却被子元素撑开的问题

问题 当父元素设置了flex: 1; 的情况下&#xff0c;想在其中子元素超出父元素高度的情况下&#xff0c;产生滚动条&#xff0c;在父元素区域滚动。由于子元素高度不固定&#xff0c;故父元素设置为display: flex; flex-direction: column; 子元素设置flex: 1; overflow: auto;…

MySQL事务和SQL优化

目录 1 什么是事务 2 事务的特征 3 MySQL使用事务 实现 示例 4 事务的隔离级别 幻读 解决方法 脏读 不可重复读 幻读和不可重复读两者区别 事物的隔离级别 5 数据库优化 5.1 影响性能因素的优化 服务优化 应用优化 5.2 谁参与优化 5.3 系统优化 软件优化 硬件优…

落地PC ,AI的“iPhone时刻”要来了?

在AI技术浪潮持续翻涌的背景下&#xff0c;近段时间&#xff0c;不断有声音强调“2024年将是AIPC元年”。 为了奔赴这一可以预见的未来&#xff0c;产业链上下游的企业也“干劲十足”。品牌商方面&#xff0c;2024年的国际消费电子展&#xff08;CES&#xff09;上&#xff0c…

贪吃蛇项目

引言&#xff1a; 本文章使用C语言在Windows环境的控制台中模拟实现经典小游戏贪吃蛇。 实现基本功能&#xff1a; 1.贪吃蛇地图绘制。 2.蛇吃食物的功能&#xff08;上、下、左、右方向键控制蛇的动作&#xff09; 3.蛇撞墙死亡 4.蛇咬到自己死亡 5.计算得分 6.蛇加速…

基于springboot原创歌曲分享平台源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理平台应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

Coppeliasim倒立摆demo

首先需要将使用Python远程控制的文件导入到文件夹&#xff0c;核心是深蓝色的三个文件。 本版本为4.70&#xff0c;其文件所在位置如下图所示&#xff0c;需要注意的是&#xff0c;目前不支持Ubuntu22的远程api&#xff1a; 双击Sphere这一行的灰色文件&#xff0c;可以看到远程…

UE5/UE4中3D汉字字体文字的创建与实现

本案例工程下载位置&#xff1a;https://mbd.pub/o/bread/ZZqVmJ9v 在虚幻引擎5&#xff08;UE5&#xff09;和虚幻引擎4&#xff08;UE4&#xff09;中&#xff0c;实现3D汉字字体的创建是一项常见的需求。 本文将详细介绍两种有效的方法&#xff1a; 1.通过TextRender配合Of…

Ubuntu系统安装 Redis

环境准备 Ubuntu 系统版本&#xff1a;22.04.3Redis 版本&#xff1a;6.2.12 检查本地 make 环境 make -version若没有安装&#xff0c;则需要安装 sudo apt install make检查本地 gcc 环境 gcc -version若没有安装&#xff0c;则需要安装 sudo apt install gcc。 sudo a…

第32关 k8s集群管理开源神器 - k9s

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 随着我们管理维护的K8S集群上线&#xff0c;怎么管理好集群上面成百上千的服务pod&#xff0c;就是我们该操心的事情了。这里博哥把在生产中一直在用的一个开源管理工具k8s&#xff0c;github…