本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。
小蓝的图由 2021 个结点组成,依次编号 1 至 2021。
对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。
例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。
请计算,结点 1 和结点 2021 之间的最短路径长度是多少。
提示:建议使用计算机编程解决问题。
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
题目给定建图方式, ii 和 jj 的差值的绝对值小于 2121 的时候 ii 和 jj 之间连接一条权值为 LCM(i,j)LCM(i,j) 的边,问 11 到 20212021 的最短路径。
LCMLCM 表示最小公倍数。
这题建图方式告诉你了,老老实实按照题目说的方式建图,然后单源最短路 dijkstradijkstra 算法一下子就跑出来了。
由于蓝桥杯是闭卷,也就是不让带参考材料,很多人记不住 dijkstradijkstra 算法,或者比赛的时候一紧张写错了,导致跑出来的答案差了那么一丢丢,就很尴尬了。考虑这道题是填空题,那么不需要在规定时间内完成,那么简单好记的粗暴算法 FloydFloyd 就纳入我们的选择。
为什么说 FloydFloyd 算法粗暴,因为他用的是 DPDP 的思想,复杂度高达 O(n^3)O(n3) ,优点就是简单好写。这题 n = 2021n=2021 ,n^3n3 约等于 10 ^ {10}1010, 假设考场的电脑性能比较差,一秒只能跑 10^8108 ,也就是我们最多运行 100100 秒, 2 分钟不到就可以跑出最稳妥的答案。
最终答案:10266837。
行动消除疑虑