2021年蓝桥杯pythonB组省赛真题

文章介绍了使用不同算法解决编程竞赛中的问题,如枚举、最短路问题(Dijkstra算法)、深度优先搜索(DFS)在图论问题中的应用,以及错误修正和优化时间复杂度的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

卡片

答案:3181。

枚举。一次ac。

直线

答案:40257。

写错了。

思路没错,依次枚举所有2个点,求出截距b、斜率b,作为元组存入set中。set可以自动去重,再输出set的len属性。

错误原因是,算截距b的公式写错了。不能写b = y1-k*x1,而是要写 b = (x2*y1-x1*y2) / (x2-x1)。原因可能是不能用k去算b,会有误差。

货物摆放

答案:2430。

又是枚举?

写错了。只是枚举的话,时间复杂度过高。先找出n的所有因子(用set存储因子,因为怕出现重复),然后用二重循环枚举n的所有因子。

路径

答案:10266837。

经典的最短路问题,我用Dijkstra算法求,邻接矩阵存储无向图。计算边权需要求最大公约数与最小公倍数,还要注意i==j时,边权为0。

第一次写错了,自己debug发现了错误,是dijkstra的模板写错了,循环外不能把st[1] = True。

回路计数×

读完题,觉得这大概是图论求哈密尔顿回路?求方案数不会是dp吧?看了题解果然是dp。

听y哥说数据范围小,可以用dfs做。

a b互质:公约数只有1。思路是,先用邻接表建图,然后用dfs去遍历图。当遍历完最后一个点,并且这个点与节点1有边相连,则算作一种访问方案。每个节点只能访问一次,用bool数组 st[] 来表示。

时间显示

思路比较简单,整除+取余即可,注意python的格式化输出。

T = int(input())
for _ in range(T):
    time  = int(input())
    time //= 1000
    ss = time % 60; time //=60
    mm = time % 60; time //=60
    hh = time % 24
    print('%02d:%02d:%02d' % (hh,mm,ss))

杨辉三角形×

我只能想到打表出杨辉三角,再枚举的方法。只能过50%的样例,听说Acwing基础课讲了这个。

左孩子右兄弟×

没有思路,看了解析说树形dp。

异或数列×

感觉是个高级题目。不会做。

括号序列×

### 第十五届蓝桥杯Python B概述 #### 比详情与规则 第十五届蓝桥杯全国软件和信息技术专业人才大由中华人民共和国工业和信息化部人才交流中心主办,国信蓝桥教育科技(北京)股份有限公司承办。该事旨在促进软件和信息技术领域的人才培养与发展。截至20222月,蓝桥杯已成功举办12届,并正在进行第13届活动[^1]。 对于具体的比规则,在第十五届比中,Python B的参者需完成一系列编程挑战。这些挑战不仅测试参与者的算法设计能力,还考察其解决实际问题的能力。比通常分为级选拔和地区总决两个阶段。获得级一等奖的学生有资格晋级到全国决[^4]。 #### 题目类型与特点 关于题目方面,第十五届蓝桥杯Python B共设置了八道题目,相比以往减少了两道题目的数量。值得注意的是,本届比的难度有所降低,特别是针对Python别的设置更为友好,降低了入门门槛,使得更多初学者能够参与到这项高水平的竞争当中来[^2]。 具体来说,其中一道满分配给的题目名为《穿越时空之门》,它代表了整个试卷中的最高难度级别之一,同时也体现了命题人在创新性和趣味性上的追求。 #### 参经验分享 从个人经历来看,一位名叫小雨的同学仅用了大约十天的时间进行了集中复习和训练之后便成功获得了Python一等奖以及进入国家的机会。这表明即使基础薄弱也不必担心,只要合理规划时间和精力投入,就有可能取得优异的成绩[^3]。 另一位同学提到自己因为英语六级考试而错过了上一度的比机会,但在看到身边朋友取得了不错的成绩后决定加入进来。这也说明良好的学习氛围和支持系统可以帮助激发个人潜力并克服困难。 ```python # 示例代码片段展示如何处理简单的输入输出问题 def solve_problem(input_data): result = input_data * 2 return result if __name__ == "__main__": test_input = int(input()) output = solve_problem(test_input) print(output) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值