2021第十二届蓝桥杯省赛真题:路径

试题 D :路径

类型:结果填空,总分:10分

【问题描述】

小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。
小蓝的图由 2021 个结点组成,依次编号 1 至 2021。对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点
之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。
例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。
请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

【思路】

  1. 最短路径模板题,直接用朴素Dijkstra就行,挖坑俺有空再总结一下最短路算法
  2. 注意图的构造,求最大公约数和最小公倍数老熟人了
  3. 发现另一种思路大佬的dp做法
  4. 错误记录:在用邻接矩阵存图的时候,我们一般会用一个自定义的无穷大的数代表两点之间不连通,c/c++中一般会写memset(dist, 0x3f, sizeof dist);,我一开始考虑用Java的Integer.MAX_VALUE代表无穷大,但是我忽略了这样就不能计算了,因为Integer.MAX_VALUE随便加上一个数就超出int的表示范围结果就成负数(补码)了,所以注意无穷大还是得用static final int INF = 0x3f3f3f3f;0x3f3f3f3f的优点有:十进制为1061109567,和Integer.MAX_VALUE一个数量级,即10^9数量级,而一般场合下的数据都是小于10^9的。 0x3f3f3f3f * 2 = 2122219134,我们定义的这个无穷大相加依然不会溢出。

【代码】

import java.util.Scanner;
import java.util.Arrays;

public class Main {
   
    static final int INF = 0x3f3f3f3f;
    static final int N = 2030;
    static int[][] g = new int[N
### 关于第十一届蓝桥杯 Python B组 真题解析 目前提供的引用内容并未直接提及第十一届蓝桥杯 Python B组的具体题目或解析[^1]。然而,可以推测该事的真题通常涉及算法设计、数据结构应用以及编程技巧等方面的知识。 以下是基于过往蓝桥杯的特点和常见考点所整理的内容: #### 常见考题类型 1. **基础算法** 蓝桥杯常考察一些经典的算法实现,例如排序算法(快速排序、归并排序)、查找算法(二分查找、深度优先搜索 DFS 和广度优先搜索 BFS)等。 2. **字符串处理** 字符串的操作是竞中的高频考点之一,可能涉及到子串匹配、正则表达式或者字符替换等问题。例如: ```python s = "hello world" result = ''.join([char.upper() if i % 2 == 0 else char.lower() for i, char in enumerate(s)]) print(result) # 输出 hElLo wOrLd ``` 3. **动态规划** 动态规划问题在比中也较为常见,尤其是关于最优化路径的选择或者是资源分配的问题。这类问题的核心在于状态转移方程的设计。 4. **模拟与枚举** 部分题目可以通过暴力枚举的方式解决,尤其是在输入规模较小的情况下。需要注意的是,在编写此类程序时要充分考虑边界条件。 5. **数论基础知识** 数学方面的知识点也可能被纳入考试范围之内,比如最大公约数 GCD 的计算方法——辗转相除法: ```python def gcd(a, b): while b != 0: a, b = b, a % b return a print(gcd(48, 18)) # 输出 6 ``` 由于具体年份的真实试题尚未提供明确链接支持进一步分析[^2],建议查阅官方发布的历届题文档或其他权威资料获取更详尽的信息。 #### 如何准备? 为了更好地应对类似的编程竞,可以从以下几个方面着手准备: - 多做历年真题,熟悉各类题型; - 学习经典算法及其变种形式的应用场景; - 提升代码调试能力,确保提交前测试无误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值