zoukankan      html  css  js  c++  java
  • 滑雪_KEY

    滑雪

    ( skiing.pas/c/cpp)

    【题目描述】

    MM 参加一个滑雪比赛,滑雪场是一个 N×M 的矩形, MM 要从起点( 1, 1)滑到( N,M)。矩形中每个单位格子有一个海拔高度值 hi,从一个格子走到另一个格子速度就会变成 v*2^(hi-hj),已知 MM 的初始速度是 v,请问最少需要多少时间。(从一格到另一格的路程为1,只能向四周滑雪)

    【输入格式】

    第一行输入三个整数 V, N, M。

    接下来 N 行 M 列描述滑雪场每个单位格子的海拔高度。

    【输出格式】

    输出只有一行,表示从起点到终点的最少花费时间。答案保留 2 位小数。

    【输入样例】

    1 3 3

    1 5 3

    6 3 5

    2 4 3

    【输出样例】

    29.00

    【数据范围】

    1<=N,M<=100

    -25<=hi<=25

    这是一道图论的题目,想必大家也看出来了。

    但是要如何解决呢?

    首先知道我们要从(1,1)点到(n,m)点,而且移动的时候是会变速的

    对于每一个点,都有四个点可以滑雪,那很无疑,这就是一道最短路径问题

    但对于这种移动时会变速的最短路径问题很多算法无法很好的解决

    这个时候就要请我们的SPFA大爷出山了。

    SPFA的队列实现方式可以很好地解决这种问题,对于每次的路径变速处理,只需要在队列中多加一个记录速度的一格就好了。

    代码就不展示了。。。。

  • 相关阅读:
    jhat:虚拟机堆转储快照分析工具
    jmap:java内存影像工具
    jinfo:Java配置信息工具
    jstat:虚拟机统计信息监视工具
    jps:虚拟机进程状况工具
    jdk工具总领
    到底是"/"还是"/*"
    jdk_keytool
    html地图定位
    java 手机号码归属地查询
  • 原文地址:https://www.cnblogs.com/Cptraser/p/7593467.html
Copyright © 2011-2022 走看看