2025第十六届蓝桥杯python B组满分题解(详细)
目录
前言
A: 攻击次数
解题思路:
代码:
B: 最长字符串
解题思路:
代码:
C: LQ图形
解题思路:
代码:
D: 最多次数
解题思路:
代码:
E: A * B Problem
解题思路:
代码:
F: 园艺
编辑
解题思路:
代码:
G:书架还原
解题思路:
代码:
H: 异或和
解题思路:
代码:
结论:
前言
此次蓝桥杯共8道题(2道填空,6道编程)满分100。与去年的题相比难度降低了不少,第一道编程题简直送分,刚学的小白估计也会。我本人大一,刚学python不久,我只能说这次比赛中基本没用到什么算法,全是暴力,考前学习的DFS,BFS,二维前缀差分等等都没用上,虽然比赛中有的题我暴力也没做出来。当然,这套题想拿高分也不容易,面对巨大数据量,时间复杂度是个问题。
下面给大家分享一下满分题解,是我赛后重做,又综合各个大佬的题解做出的。以下代码在洛谷均可通过,现在蓝桥官网上还没更新,不知在蓝桥官网上测评如果。欢迎各位大佬对我的题解进行点评指正。
A: 攻击次数

解题思路:
这道题没什么难度,正确结果为103,我估计会有不少人结果为104,原因为如果设回合数i的初始值为1,这里需要注意的是在103回合后,血量已经小于0,但在下个while循环中,回合数仍+1,所以最后结果要-1。所以直接设i为0即可。
代码:
n=2025
i=0
while n>0:atk = 5if i%2==1:atk+=15else:atk+=2if i%3==1:atk+=2if i%3==2:atk+=10if i%3==0:atk+=7n-=atki+=1
print(i)
B: 最长字符串

这道题有难度,比赛时没啥思路,50000个数据当时让电脑死机两回
解题思路:
正确答案为'afplcu'。想做对当然要先完全理解题目的啦。这里难点在于若s4是优美字符串,那么s3,s2,s1都必须是优美字符串。什么是字典序最小?简单来说就是如果相同长度,其字母在字母表中排位越靠前,字典序越小。例如 'abc'<'abd'。
- 为了方便遍历,要将50000个数据转换化成列表形式
- 先对列表按照长度排序,短的放在前面,因为长字符串是否符合需要短字符串进行辅助
- 建立一个seen集合,从短到长存储长度为1的字符串与不同长度的优美字符串
- 利用sorted()可将乱序字符串按字典序改成统一的顺序进行判断
- 利用for循环,从短到长依次判断。(txt文档可在博客顶部下载)
代码:
l= # 将txt中的所有数据复制到三引号内即可,此处省略
'''
tdasm
ciswmz
.
.
.
'''
l=l.split('\n')
l=list(set(l)) # 删除重复数据
l.sort(key = len)
seen = set()
ret = ''for i in l:if len(i) == 1:seen.add(i)else:ss = sorted(i[:-1])m=''.join(ss)if m in seen:ans = ''.join(sorted(i))seen.add(ans)if len(i) > len(ret): # 长度最长ret = ielif i < ret: # 字典序最小ret = iprint(ret) #afplcu
C: LQ图形

解题思路:
超级简单,两个for循环
代码:
w,h,v=map(int,input().split())
for i in range(h):print('Q'*w)
for j in range(w):print('Q'*(v+w))
D: 最多次数

解题思路:
- 建立一个包含六种可能的列表
- 利用while循环切片,若在列表中计数加1
代码:
n=input()
num=0
i=0
seen1=['l','q','b']
seen2=['lqb','lbq','qlb','qbl','blq','bql']while i<=len(n)-3:if n[i] in seen1: # 减少不必要的切片操作ans=n[i:i+3]if ans in seen2:num+=1i+=3else:i+=1else:i+=1
print(num)
E: A * B Problem

有点难度,比赛时没啥思路,纯暴力的话应该可以通过40%--80%的数据,但要想全通过就要用到数论中约数个数与约数个数前缀和之间的计数关系。如果有更好的办法,欢迎评论留言。
解题思路:
- 建立列表a,计算1--L 每一个数的约数个数
- 建立列表b,计算约数个数的前缀和
- 约数个数与约数个数前缀和乘积的累加
代码:
L=int(input())
ans=0
a=[0]*(L+1)
b=[0]*(L+1)for i in range(1,L+1):for j in range(i,L+1,i):a[j]+=1 #约数个数计数器 +1for i in range(1,L+1):b[i]=b[i-1]+a[i] #前缀和数组for i in range(1,L+1):ans+=a[i]*b[L-i] #统计答案
print(ans)
F: 园艺
解题思路:
- 这道题类似于求最长递增子序列,利用动态规划来做
- 建立一个dp数组,用来记录每一个以第i棵为结尾,d为间隔的棵树数据
- 遍历全部dp数组,找到最大值
代码:
n = int(input())
a = list(map(int, input().split()))
dp = [[1] * (n + 1) for i in range(n)]for i in range(n):for j in range(i):if a[i] > a[j]: # 满足高度递增d = i - j # d为两树之间间隔dp[i][d] = max(dp[i][d], dp[j][d] + 1)ans = 0
for row in dp:if max(row)>ans: # 找最大值ans=max(row)
print(ans)
G:书架还原

我第一反应是利用两个for循环,虽然思路是对的,但时间复杂度太高,但只通过了30%的数据
解题思路:
- 要想操作次数最少,必须每一次操作都至少有一本书归放原处
- 从第一个为位置开始,定住一个位置,若此书理应不在此位置,进入while循环
- 在循环中,将此位置的书放回原位置,而原位置的书拿过来,再次进行while判断
代码:
n = int(input())
nums = list(map(int, input().split()))
count = 0for i in range(n):while i != nums[i] - 1:ans = nums[i]nums[i] = nums[ans - 1] nums[ans - 1] = ans # 书归原处count += 1
print(count)
H: 异或和


涉及到双重求和,求两个数的异或和可以用“ ^ ” 内置函数,比赛时忘了这个东西可以求异或和
利用for循环嵌套可以暴力通过40%的数据,这就是8分啊,比赛时能得到这8分也很不错了。
暴力代码:(只能通过40%数据,仅供参考)
n = int(input())
nums = list(map(int, input().split()))
ans = 0for i in range(n):for j in range(i+1, n):x=j - ians += (nums[i] ^ nums[j]) * x
print(ans)
如果要的满分要涉及到位运算,二进制每一位对最后结果的贡献。
解题思路:
- 数据最大值的二进制有多少位,外循环就遍历多少次
- 内循环从最小位开始,拿出每个数据二进制的第i位,只有当两个数一个为0一个为1时,才会对最后结果产生贡献,因为按位异或的原理为同为0,异为1。
代码:
n = int(input())
a = list(map(int, input().split()))
ans = 0
bit = 1 # 权重初始为1s=bin(sorted(a)[-1])[2:]
for i in range(len(s)):dex0 = 0 # 当前位为0的下标和dex1 = 0 # 当前位为1的下标和count0 = 0 # 当前位为0的个数count1 = 0 # 当前位为1的个数for j in range(n):current = a[j]if (current >> i) & 1: # 判断此位是否为1index=j + 1 # 下标值=索引值+1ans += bit * (index * count0 - dex0) # 此位对最后结果的贡献dex1 += indexcount1 += 1else:index = j + 1ans += bit * (index * count1 - dex1)dex0 += indexcount0 += 1bit <<= 1 # 按位的权重*2
print(ans)
附:以题目所给[9,8,7,6]为例,计算第一次内循环的贡献为6。 ans=6+16+32+64=118

附:按位异或规则

结论:
总的来说,全用暴力也可以取得一个不错的成绩,想要高分还是有点难度的。本人是一个初学算法的大一小白,提供的代码和作图若有错误,欢迎各位大佬的点评指正,最后祝愿每一位参赛者都可以取得一个好成绩!!!
相关文章:
2025第十六届蓝桥杯python B组满分题解(详细)
目录 前言 A: 攻击次数 解题思路: 代码: B: 最长字符串 解题思路: 代码: C: LQ图形 解题思路: 代码: D: 最多次数 解题思路: 代码: E: A * B Problem 解题思路&…...
工厂方法模式详解及在自动驾驶场景代码示例(c++代码实现)
模式定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,通过定义抽象工厂接口将对象创建过程延迟到子类实现,实现对象创建与使用的解耦。该模式特别适合需要动态扩展产品类型的场景。 自动驾驶感知场景分析 自动驾…...
Redis之Java操作redis
零:在test测试类下创建一个类 SpringBootTest public class SpringDateRedisTest {... } 一:五大操作类型 Autowiredprivate RedisTemplate redisTemplate;Testpublic void testRedisTemplate() {System.out.println(redisTemplate);ValueOperations v…...
Kafka 面试,java实战贴
面试问题列表 Kafka的ISR机制是什么?如何保证数据一致性? 如何实现Kafka的Exactly-Once语义? Kafka的Rebalance机制可能引发什么问题?如何优化? Kafka的Topic分区数如何合理设置? 如何设计Kafka的高可用跨…...
linux多线(进)程编程——(9)信号量(一)
前言 在找到了共享内存存在的问题后,进程君父子着手开始解决这些问题。他们发明了一个新的神通——信号量。 信号量 信号量是一个计数器,用于管理对共享资源的访问权限。主要特点包括: (1)是一个非负整数 ÿ…...
PFLM: Privacy-preserving federated learning with membership proof证明阅读
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
关闭111端口监听
默认rpcbind服务会使用111端口,如果想禁用111端口,只需要禁用rpcbind服务即可: systemctl stop rpcbind.socket systemctl disable rpcbind.socket#检查111端口是否禁用成功 netstat -tuln |grep 111rpcbind 服务详解 rpcbind 服务…...
C++中的引用:深入理解与实用示例
文章目录 C中的引用:深入理解与实用示例一、引用的基本概念二、引用作为别名的应用三、引用作为函数参数四、指针与引用的区别五、常量引用六、引用与返回值七、总结 C中的引用:深入理解与实用示例 在C编程中,“引用”是一个强大而重要的概念…...
图片转base64 - 加菲工具 - 在线转换
图片转base64 - 加菲工具 先进入“加菲工具” 网 打开 https://www.orcc.top, 选择 “图片转base64”功能 选择需要转换的图片 复制 点击“复制”按钮,即可复制转换好的base64编码数据,可以直接用于img标签。...
opencv 对图片的操作
对图片的操作 1.图片镜像旋转(cv2.flip())2 图像的矫正 1.图片镜像旋转(cv2.flip()) 图像的旋转是围绕一个特定点进行的,而图像的镜像旋转则是围绕坐标轴进行的。图像的镜像旋转分为水平翻转、垂直翻转、水平垂直翻转…...
LabVIEW数据采集与传感系统
开发了一个基于LabVIEW的智能数据采集系统,该系统主要通过单片机与LabVIEW软件协同工作,实现对多通道低频传感器信号的有效采集、处理与显示。系统的设计旨在提高数据采集的准确性和效率,适用于各种需要高精度和低成本解决方案的工业场合。 项…...
【Easylive】Gateway模块 bootstrap.yml 解析
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 Gateway模块 bootstrap.yml 常规解析 该配置文件定义了 Spring Cloud Gateway 的核心配置,包括 环境配置、服务注册、动态路由规则 等。以下是逐项解析: 1. 基础配…...
matlab 环形单层柱状图
matlab 环形单层柱状图 matlab 环形单层柱状图 matlab 环形单层柱状图 图片 图片 【图片来源粉丝】 我给他的思路是:直接使用风玫瑰图可以画出。 rose_bar 本次我的更新和这个有些不同!是环形柱状图,可调节细节多; 只需要函数…...
文献×汽车 | 基于 ANSYS 的多级抛物线板簧系统分析
板簧系统是用于减弱或吸收动态系统中发生的应力、应变、偏转和变形等破坏性因素的机械结构。板簧系统可能对外力产生不同的响应,具体取决于其几何结构和材料特性。板簧系统的计算机辅助分析对于高精度确定系统的变形特性和结构特性至关重要。 在这项工作中ÿ…...
MySQL:如何用关系型数据库征服NoSQL核心战场?
写在前面:当SQL遇见NoSQL的十年之变 2012年MongoDB掀起文档数据库革命时,开发者们不得不在灵活性与事务一致性之间做痛苦抉择。十年后的今天,MySQL 8.0的JSON功能已实现: ✅ 二进制存储效率超越传统BLOB 40% ✅ 多值索引使JSON查…...
分布式之CAP原则:理解分布式系统的核心设计哲学
声明:CAP中的P原则都是需要带着的 在分布式系统的设计与实践中,CAP原则(又称CAP定理)是开发者必须掌握的核心理论之一。它揭示了分布式系统在一致性(Consistency)、可用性(Availability&#x…...
RHCE 练习二:通过 ssh 实现两台主机免密登录以及 nginx 服务通过多 IP 区分多网站
一、题目要求 1.配置ssh实现A,B主机互相免密登录 2.配置nginx服务,通过多ip区分多网站 二、实验 实验开始前需准备两台 linux 主机便于充当服务端以及客户端,两台主机 IP 如下图: 实验1:配置 ssh 实现 A࿰…...
瑞吉外卖-分页功能开发中的两个问题
1.分页功能-前端页面展示显示500 原因:项目启动失败 解决:发现是Category实体类中,多定义了一个删除字段,但是我数据库里面没有is_deleted字段,导致查询数据库失败,所以会导致500错误。因为类是从网上其他帖…...
工业物联网安全网关 —— 安全OTA升级签名验证
这里写目录标题 工业物联网安全网关 —— 安全OTA升级签名验证一、项目背景与简介1.1 背景介绍1.2 OTA升级的安全挑战1.3 项目目标二、理论基础与关键技术2.1 数字签名基础2.2 OTA升级签名验证原理2.3 关键技术与安全算法三、系统架构设计3.1 系统模块划分3.2 系统架构图(Merm…...
生信分析平台Galaxy是使用什么语言编程?是R语言吗?
Galaxy平台是一个基于**Python**开发的开放源代码生物信息学分析平台,而非主要依赖R语言。以下是关键细节: 1. **核心语言** - **后端**:主要用**Python**(Django/Flask框架)实现服务器逻辑、工具集成和API。 …...
【Rust 精进之路之第10篇-借用·规则】引用 (``, `mut`):安全、高效地访问数据
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:所有权的“限制”与“变通”之道 在上一篇【所有权核心】中,我们揭示了 Rust 如何通过所有权规则和移动 (Move) 语义来保证内存安全,避免了垃圾回收器的同时,也防止了诸…...
基于瑞芯微RK3576国产ARM八核2.2GHz A72 工业评估板——Docker容器部署方法说明
前 言 本文适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:VMware16.2.5、Ubuntu22.04.5 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-6.1.115 LinuxSDK:LinuxSDK-[版本号](基于rk3576_linux6.1_release_v1.1.0) Docker是一个开…...
Kafka安全认证技术:SASL/SCRAM-ACL方案详解
#作者 :张桐瑞 文章目录 1Kafka安全认证技术介绍2基础设置3 配置SASL/SCRAM认证3.1编写server.properties配置3.2编写kafka.conf密码文件3.3编写user.properties配置文件3.4编写kafka-run-class.sh脚本文件3.5Zk中增加kafka用户3.6启动kafka进程 1Kafka安全认证技术…...
MySQL VS SQL Server:优缺点全解析
数据库选型、企业协作、技术生态、云数据库 1.1 MySQL优缺点分析 优点 开源免费 社区版完全免费,适合预算有限的企业 允许修改源码定制功能(需遵守GPL协议) 跨平台兼容性 支持Windows/Linux/macOS,适配混合环境部署 云服务商…...
探索 Flowable 后端表达式:简化流程自动化
什么是后端表达式? 在 Flowable 中,后端表达式是一种强大的工具,用于在流程、案例或决策表执行期间动态获取或设置变量。它还能实现自定义逻辑,或将复杂逻辑委托…… 后端表达式在 Flowable 的后端运行,无法访问前端…...
Mysql的redolog
保证事务持久性,用于崩溃恢复,崩溃恢复时,把redo上记载的页读到内存,对其修改,变为脏页,刷盘运用于WAL技术,将随机写改为顺序写 redo log有三种状态: 存在 redo log buffer 中&…...
HDFS入门】HDFS安全与权限管理解析:从认证到加密的完整指南
目录 引言 1 认证与授权机制 1.1 Kerberos认证集成 1.2 HDFS ACL细粒度控制 2 数据加密保护 2.1 传输层加密(SSL/TLS) 2.2 静态数据加密 3 审计与监控体系 3.1 操作审计流程 3.2 安全监控指标 4 权限模型详解 4.1 用户/组权限模型 4.2 umask配置原理 5 安全最佳实…...
React-useImperativeHandle (forwardRef)
我们会遇到这样的场景:某个组件想要暴露一些方法,来供外部组件来调用。例如我们在开发form表单的时候,就需要把设置表单值、重置值、提交等方法暴露给外部使用。会有如下代码: import { forwardRef } from react;const Form for…...
Mediatek Android13 设置Launcher
概述: 本章将围绕Launcher讲述两种修改默认Launcher的情况。 一:完全覆盖 第一种方法和预置apk类似,区别在于增加LOCAL_OVERRIDES_PACKAGES说明,该方法会完全覆盖系统默认的Launcher。 关于如何预置apk,可见另一篇文章: Mediatek Android13 预置APP-CSDN博客 修改A…...
性能比拼: Go vs Java
本内容是对知名性能评测博主 Anton Putra Go (Golang) vs Java: Performance Benchmark 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在本视频中,我们将比较 Go 和 Java。 我们将基于 Golang 的 Fiber 框架和 Java 的 Spring Boot 创建几个简单的应用…...

