当前位置: 首页 > ai >正文

P1613 跑路

题目大意

一张有 n n n 个顶点, m m m 条边的单向图。人在图上行走,每一秒可以走 2 k 2^{k} 2k k k k 是任意自然数)步。请问从 1 走到 n n n 最少花费时间是多少。

分析

设从 1 走到 n n n 最少花费方案为 { 1 , a 1 , a 2 , . . . , a p , n } \{1,a_1,a_2,...,a_p,n\} {1,a1,a2,...,ap,n}。其中, a i a_i ai 代表的是每次走到的顶点编号。

a p = i a_p=i ap=i 时(需要存在 w ( i , n ) w(i,n) w(i,n) 满足 2 j 2^j 2j 的距离)。方案变为: { 1 , a 1 , a 2 , . . . , a p − 1 , i , n } \{1,a_1,a_2,...,a_{p-1},i,n\} {1,a1,a2,...,ap1,i,n}。方案的属性:

  1. 目的地。子方案的目的地为 i i i
  2. 花费时间。原方案花费的时间 = 子方案花费的时间 + 1。因此,子方案求解的也是最少花费时间。

综上所述,子方案反映的问题是从 1 ~ i i i 的最少花费时间。满足动态规划性质。不过,由于是在图中,考虑用 floyd、dij、spfa 去实现动态规划。

在这个过程中,我们还需要判断 ( i , n ) (i,n) (i,n) 是否存在一条 2 j 2^j 2j 的路径。因此,可以预处理一个 st 数组,其中 st[i][j][k] 代表从顶点 i i i j j j 是否存在一条 2 k 2^k 2k 的路径。显然,这可由倍增优化实现。

http://www.xdnf.cn/news/1386.html

相关文章:

  • Eliciting Causal Abilities in Large Language Models for Reasoning Tasks
  • 【Python 学习笔记】 pip指令使用
  • NLP高频面试题(五十二)——BERT 变体详解
  • 什么是数据库的DDL和DML,有什么区别?
  • 《多Agent架构VS千万字长文本VS深度推理引擎——拆解Coze、通义、Kimi的AI终局博弈密码》
  • Go语言学习笔记(一)
  • 数据库11(触发器)
  • 智启未来|艾博连科技加入奇瑞雄狮科技LION AI联合实验室
  • VUE3中使用echarts,配置都正确,不出现tooltip
  • 大厂面试-redis
  • 【KWDB 创作者计划】_深度学习篇---向量指令集
  • system verilog 语句 耗时规则
  • 拥抱基因体检,迎接精准健康管理新时代
  • 3.3 技术框架:LangChain、ReAct、Memory与Tool Integration
  • ROS 快速入门教程02
  • (19)VTK C++开发示例 --- 分隔文本读取器
  • Kafka 详解
  • 服务器上安装jdk
  • Android Cordova 开发 - Cordova 快速入门(Cordova 环境配置、Cordova 第一个应用程序)
  • SQL Server 2022 常见问题解答:从安装到优化的全场景指南
  • Linux部署Web程序
  • openharmony5.0.0中C++公共基础类测试-线程相关(一)
  • 【项目篇】仿照RabbitMQ模拟实现消息队列
  • .NET、java、python语言连接SAP系统的方法
  • 音视频小白系统入门课-4
  • 个人mysql学习笔记
  • python中 zip的用法
  • 汽车免拆诊断案例 | 2016款奔驰C200L车组合仪表上多个故障灯偶尔点亮
  • 管理100个小程序-很难吗
  • JavaScript性能优化实战(3):内存管理与泄漏防范