简单图论:指数移动

这篇具有很好参考价值的文章主要介绍了简单图论:指数移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解题思路

小明所跑的路径,可以分成几段,每一段长为 2 t 2^t 2t
所以关键在于确定任意点对 ( i , j ) (i, j) (i,j) 点之间是否存在 2 t 2^t 2t 的路径。
由于要计算所有点对之间的路径,所以用 Floyd 算法。
1、 计算出一个新图,初始化所有节点间的距离为无穷大。
2、若点对 ( i , j ) (i, j) (i,j) 之间的存在长 2 t 2^t 2t 的路径,把 ( i , j ) (i, j) (i,j) 的边长 mp[i][j] 赋值为 1 ,即从点 i i i到点 j j j存在一条长度为 2 t 2^t 2t的路径,使得小明可以1秒到达。
3、在这个新图上,求 1 到 n 的最短路径就是答案。
计算长度为 2^t 的路径:可以根据倍增的原理,有 2 t = 2 t − 1 + 2 t − 1 2^t = 2^{t-1} +2^{t-1} 2t=2t1+2t1
p [ i ] [ j ] [ t ] = T r u e p[i][j][t] = True p[i][j][t]=True 表示 i 、 j 之间有一条长 2 t 2^t 2t 的路径,
根据 Floyd 算法的思路,路径通过一个中转点 k k k,有 p [ i ] [ j ] [ t ] = p [ i ] [ k ] [ t − 1 ] + p [ k ] [ j ] [ t − 1 ] p[i][j][t]= p[i][k][t-1]+ p[k][j][t-1] p[i][j][t]=p[i][k][t1]+p[k][j][t1]
利用倍增原理计算新图 mp[],复杂度 O(n^3)。在新图 mp[] 上计算最短路。文章来源地址https://www.toymoban.com/news/detail-549915.html

AC_Code

# -*- coding: utf-8 -*-
# @Author : BYW-yuwei
# @Software: python3.8.6
N = 55
p = [[[False for _ in range(33)] for _ in range(N)] for _ in range(N)]
mp = [[float('inf') for _ in range(N)] for _ in range(N)]
n,m = map(int,input().split())
for i in range(m):
    u,v = map(int,input().split())
    u,v = u-1,v-1
    mp[u][v] = 1
    p[u][v][0] = True
for t in range(1,33):
    for k in range(n):
        for i in range(n):
            for j in range(n):
                if p[i][k][t-1] and p[k][j][t-1]:
                    p[i][j][t] = True
                    mp[i][j] = 1
for k in range(n):
    for i in range(n):
        for j in range(n):
            mp[i][j] = min(mp[i][j],mp[i][k]+mp[k][j])
print(mp[0][n-1])

到了这里,关于简单图论:指数移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GBDT算法原理以及实例理解(含Python代码简单实现版)

    GBDT 的全称是 Gradient Boosting Decision Tree ,梯度提升树,在传统机器学习算法中,GBDT算的上是TOP前三的算法。 想要理解GBDT的真正意义,那就必须理解GBDT中的 Gradient Boosting 和 Decision Tree 分别是什么? 1. Decision Tree:CART回归树 首先, GBDT使用的决策树是CART回归树 ,无论是处理回

    2024年02月02日
    浏览(39)
  • 不写代码开启Restful服务

    很久没有写文章了,不管什么原因,总觉得心里还是觉得有点焦虑,不看看书写点东西就有莫名的焦虑,仿佛只有忙起来才能忘记焦虑。虽然我也知道更重要的是思考方向,但是就像走路,不出发随着时间的流逝,总觉得有种焦虑感,总觉得一直走在路上,才有踏实的充实感

    2024年02月16日
    浏览(36)
  • 基于新浪微博海量用户行为数据、博文数据数据分析:包括综合指数、移动指数、PC指数三个指数

    项目介绍 微指数是基于海量用户行为数据、博文数据,采用科学计算方法统计得出的反映不同事件领域发展状况的指数产品。 微指数对于收录的,在指数方面提供微博数据层面的指数数据,包括综合指数、移动指数、PC指数三个指数。 项目举例 以‘中兴’这一

    2024年02月14日
    浏览(63)
  • 牛叉,一行代码不写,就可以开发系统

    如今AI和低代码越来越火,可以瞬间完成一个系统的开发。 不用一行代码,轻松实现业务数字化,是怎么做到的? 前面小孟开发了大量的系统,很多时候不是我写代码多么快,也不是我技术多么的厉害,而是我工具选择的好。 今天给大家分享一波。 先看一下我常用的低代码

    2024年02月07日
    浏览(47)
  • 不写代码也能年薪百万?Prompt+低代码开发实战

    👉腾小云导读 近期 AIGC 狂潮席卷,“前端走向穷途”“低代码时代终结”的言论甚嚣尘上。事实上 GPT 不仅不会干掉低代码,反而会大幅度促进低代码相关系统的开发。本文会介绍 GPT Prompt Engineering 的基本原理,以及如何帮助低代码平台相关技术快速开发落地的技术方案。接

    2024年02月16日
    浏览(45)
  • 软件工程师,要么不写代码,要么就写优雅的代码

    何为优雅的代码         优雅的代码,至少需要遵循以下几个原则:          遵守规范         优雅的代码,首先让人看起来就是很整洁的。而这种整洁,则来源于代码规范。严格地遵守代码规范,是提高且保证代码质量的最有效方法。从个人开发的角度来看,一

    2024年02月06日
    浏览(56)
  • 关于程序员不写代码注释这一件事

    博主个人写代码是肯定会写注释的,哪怕是简单的功能,文档注释、多行注释、单行注释怎么顺手怎么用,让一个小白也能看懂自己的代码。 博主认为程序员不写注释的原因无外乎以下几点: 1、太懒了,就是单纯不想写 2、平时没有养成写代码注释的习惯 3、作为一个程序员

    2024年02月07日
    浏览(40)
  • 【华为OD机试真题】1105 - 简单的解压缩算法(JAVA C++ Python JS) | 机试题+算法思路+考点+代码分析

    🍂个人博客首页: KJ.JK   🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用Java语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习

    2024年02月05日
    浏览(38)
  • 【华为OD机试真题 】1105 - 简单的解压缩算法(JAVA C++ Python JS) | 机试题+算法思路+考点+代码分析

    🍂个人博客首页: KJ.JK   🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用Java语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习

    2024年02月05日
    浏览(65)
  • 【高效炼丹】指数移动平均(EMA):深度学习中的神器

    指数移动平均(EMA)是一种常用的平滑方法。其原理非常简单,就是对序列数据进行加权平均。EMA会给近期的数据点赋予更大的权重,而对较早期的数据点赋予较小的权重。这样可以有效地平滑时间序列数据,使其更加连续和稳定。 在深度学习中,EMA通常用于平滑模型参数的

    2024年02月17日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包