第十六届蓝桥杯大赛软件赛省赛 Python 大学 B 组 满分题解

题面链接Htlang/2025lqb_python_b

个人觉得今年这套题整体比往年要简单许多,但是G题想简单了出大问题,预估5+0+10+10+15+12+0+8=60,道阻且长,再接再厉

代码仅供学习参考,满分为赛后洛谷中的测评,蓝桥杯官方测评待完成

A: 攻击次数

答案:103?181?题目没说明白每回合是不是只能使用一个英雄?

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():xl = 2025cnt = 0for i in range(1, 2025):cnt += 1xl -= 5if i % 2 == 1:xl -= 15else:xl -= 2if i % 3 == 1:xl -= 2elif i % 3 == 2:xl -= 10elif i % 3 == 0:xl -= 7if xl <= 0:breakprint(i, xl)print(cnt)T = 1
for i in range(T):solve()

B: 最长字符串

答案:afplcu

# # 考场错误解
# def I():
#     return input()# def II():
#     return int(input())# def MII():
#     return map(int, I().split())# def LMII():
#     return list(MII())# def solve():
#     with open(r'words.txt', 'r') as file:
#         data = file.readlines()#     dic = {}
#     for i in range(len(data)):
#         x = data[i].strip()
#         data[i] = list(x)
#         dic[x] = 0
#         data[i].sort()
#         dic[x] = data[i]#     can = set()
#     for i in range(100):
#         for x in data:
#             if len(x) == i + 1:
#                 if len(x) == 1:
#                     can.add(tuple(x))
#                 else:
#                     if tuple(x[:len(x) - 1]) in can:
#                         can.add(tuple(x))
#     cnt = 0
#     for x in can:
#         if len(x) > cnt:
#             cnt = len(x)
#     res = []
#     for x in can:
#         if len(x) == cnt:
#             res.append(x)
#     # print(dic)
#     print(res)
#     for x in dic:
#         # print(tuple(dic[x]))
#         if tuple(dic[x]) == res[0]:
#             print(x)# T = 1
# for i in range(T):
#     solve()# 正解
def is_beautiful_words(words):"""计算所有优美单词,并返回一个字典:key: 单词长度value: 集合,每个元素为 (word, sorted(word)) 表示已经确认的优美单词"""# 按长度升序排序(长度相同时字典序排序)words_sorted = sorted(words, key=lambda w: (len(w), w))# 用于存储每个长度的优美单词beautiful_by_length = {}for word in words_sorted:l = len(word)if l == 1:# 长度为1的单词自动是优美字符串(只要在单词本中)beautiful_by_length.setdefault(1, set()).add( (word, word) )  # 此处 sorted(word) == wordelse:# 先看是否存在长度为 l-1 的优美单词if (l - 1) not in beautiful_by_length:continue# 取当前单词的前 l-1 个字符,并计算其排序结果prefix = word[:-1]sorted_prefix = ''.join(sorted(prefix))# 检查是否存在一个长度为 l-1 的优美单词,其排序后的字符与 prefix 一致found = Falsefor bw, bw_sorted in beautiful_by_length[l - 1]:if bw_sorted == sorted_prefix:found = Truebreakif found:beautiful_by_length.setdefault(l, set()).add( (word, ''.join(sorted(word))) )return beautiful_by_lengthdef find_longest_beautiful_word(filename):with open(filename, "r", encoding="utf-8") as f:# 每一行一个单词,去除空白符words = [line.strip() for line in f if line.strip()]beautiful_by_length = is_beautiful_words(words)if not beautiful_by_length:return ""# 找到存在的最大长度max_len = max(beautiful_by_length.keys())# 在最大长度中,找出字典序最小的那个单词candidates = [word for word, _ in beautiful_by_length[max_len]]result = min(candidates) if candidates else ""return resultif __name__ == "__main__":# 假设文件名为 words.txtresult = find_longest_beautiful_word("words.txt")print("最长的优美字符串为:", result)

C: LQ 图形

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():w, h, v = MII()for i in range(h):print("Q" * w)for i in range(w):print("Q" * (w + v))T = 1
for i in range(T):solve()

D: 最多次数

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():s = I()check = {'lqb', 'lbq', 'qlb', 'qbl', 'blq', 'bql'}res = 0i = 0# print(len(s))while i < len(s) - 2:# print(i, s[i:i + 3])if s[i:i + 3] in check:res += 1i += 2i += 1print(res)T = 1
for i in range(T):solve()

E: A · B Problem

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():L = II()res = 0lst = [0] * (L + 5)for i in range(1, L + 1):for j in range(1, L + 1):if i * j >= L:breaklst[i * j] += 1pre = lst.copy()for i in range(1, L):pre[i] += pre[i - 1]for i in range(1, L):cnt1 = icnt2 = L - ires += lst[cnt1] * pre[cnt2]print(res)T = 1
for i in range(T):solve()

赛时对拍

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1(n):res = 0for i in range(1, n + 1):for j in range(1, n + 1):for k in range(1, n + 1):for l in range(1, n + 1):if i * k + j * l <= n:res += 1# print((i, k), (j, l))print(res)def solve2(L):res = 0lst = [0] * (L + 5)for i in range(1, L + 1):for j in range(1, L + 1):if i * j >= L:breaklst[i * j] += 1pre = lst.copy()for i in range(1, L):pre[i] += pre[i - 1]for i in range(1, L):cnt1 = icnt2 = L - ires += lst[cnt1] * pre[cnt2]print(res)T = 1
for i in range(T):L = II()solve1(L)solve2(L)

F: 园艺

赛时代码,可能超时

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():n = II()data = LMII()res = 1cnt = 1for i in range(1, n):if data[i] > data[i - 1]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)if res == 1 or res == n:print(res)returnfor jg in range(2, n):  # 间隔if res > (n - 1) // jg + 1:breakfor st in range(n - jg):cnt = 1for idx in range(st + jg, n, jg):if data[idx] > data[idx - jg]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)print(res)T = 1
for i in range(T):solve()

赛后优化及对拍

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1(n, data):res = 1cnt = 1for i in range(1, n):if data[i] > data[i - 1]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)if res == 1 or res == n:print(res)returnfor jg in range(2, n):  # 间隔if res > (n - 1) // jg + 1:breakfor st in range(n - jg):cnt = 1for idx in range(st + jg, n, jg):if data[idx] > data[idx - jg]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)print(res)def solve2(n, data):dp = [[1 for _ in range(n + 1)] for _ in range(n + 1)]for i in range(0, n):for j in range(0, i):if data[i] > data[j]:dp[i][i - j] = dp[j][i - j] + 1print(max([max(d) for d in dp]))T = 1
for i in range(T):n = II()# data = LMII()import randomdata = [random.randint(1, 2 ** 20) for _ in range(n)]import timet1 = time.time()solve1(n, data)t2 = time.time()solve2(n, data)t3 = time.time()print(t2 - t1, t3 - t2)

G: 书架还原

# # 考场错误解
# def I():
#     return input()# def II():
#     return int(input())# def MII():
#     return map(int, I().split())# def LMII():
#     return list(MII())# def solve():
#     n = II()
#     data = [0] + LMII()
#     res = 0
#     for i in range(1, n + 1):
#         if i != data[i]:
#             if i == data[data[i]]:
#                 res += 1
#                 x = data[data[i]]
#                 data[data[i]] = data[i]
#                 data[i] = x
#     print(res, data)
#     cnt = 0
#     for i in range(1, n + 1):
#         if i != data[i]:
#             cnt += 1
#     if cnt:
#         print(res + cnt - 1)
#     else:
#         print(res)# T = 1
# for i in range(T):
#     solve()# 正解
n = int(input())
a = list(map(int, input().split()))
visited = [False] * n
ans = 0for i in range(n):if not visited[i] and a[i] != i + 1:count = 0j = iwhile not visited[j]:visited[j] = Truecount += 1j = a[j] - 1ans += count - 1print(ans)

H: 异或和

赛时代码,超时

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1():n = II()data = LMII()res = 0for i in range(n - 1):for j in range(i + 1, n):res += (data[i] ^ data[j]) * (j - i)print(res)T = 1
for i in range(T):solve1()

赛时对拍,超时

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1(n, data):res = 0for i in range(n - 1):for j in range(i + 1, n):# print(data[i],data[j],data[i] ^ data[j])res += (data[i] ^ data[j]) * (j - i)print(res)def solve2(n, data):res = 0for j_i in range(1, n):cnt = 0for i in range(j_i):for j in range(i + j_i, n, j_i):cnt += data[j - j_i] ^ data[j]res += j_i * cntprint(res)T = 1
for i in range(T):n = II()# data = LMII()import randomdata = [random.randint(1, 2 ** 20) for _ in range(n)]import timet1 = time.time()solve1(n, data)t2 = time.time()solve2(n, data)t3 = time.time()print(t2 - t1, t3 - t2)

赛后补题

n = int(input())
a = list(map(int, input().split()))
ans = 0for k in range(31):  # 考虑31位足以覆盖正整数的情况cnt1 = 0  # 记录当前位为1的个数sum1 = 0  # 记录当前位为1的位置之和for j in range(1, n + 1):b = (a[j - 1] >> k) & 1  # 取出第k位if b:cnt0 = j - 1 - cnt1sum0 = (j - 1) * j // 2 - sum1ans += (j * cnt0 - sum0) * (1 << k)cnt1 += 1sum1 += jelse:ans += (j * cnt1 - sum1) * (1 << k)print(ans)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

若依代码生成器原理velocity模板引擎(自用)

1.源码分析 代码生成器:导入表结构(预览、编辑、删除、同步)、生成前后端代码 代码生成器表结构说明&#xff1a; 若依提供了两张核心表来存储导入的业务表信息&#xff1a; gen_table&#xff1a;存储业务表的基本信息 &#xff0c;它对应于配置代码基本信息和生成信息的页…

如何制定有效的风险应对计划

制定有效的风险应对计划的核心在于&#xff1a; 识别潜在风险、评估风险的影响与概率、选择合适的应对策略、建立动态监控和反馈机制。 其中&#xff0c;识别潜在风险是最为关键的第一步。只有准确识别出可能的风险&#xff0c;才能在后续的评估、应对、监控等环节中做到有的放…

A2A协议实现详解及示例

A2A协议概述 A2A (Agent2Agent) 是Google推出的一个开放协议&#xff0c;旨在使AI智能体能够安全地相互通信和协作。该协议打破了孤立智能体系统之间的壁垒&#xff0c;实现了复杂的跨应用自动化。[1] A2A协议的核心目标是让不同的AI代理能够相互通信、安全地交换信息以及在各…

【中级软件设计师】前趋图 (附软考真题)

【中级软件设计师】前趋图 (附软考真题) 目录 【中级软件设计师】前趋图 (附软考真题)一、历年真题三、真题的答案与解析答案解析 复习技巧&#xff1a; 若已掌握【前趋图】相关知识&#xff0c;可直接刷以下真题&#xff1b; 若对知识一知半解&#xff0c;建议略读题目&#x…

调节磁盘和CPU的矛盾——InnoDB的Buffer Pool

缓存的重要性 无论是用于存储用户数据的索引【聚簇索引、二级索引】还是各种系统数据&#xff0c;都是以页的形式存放在表空间中【对一个/几个实际文件的抽象&#xff0c;存储在磁盘上】如果需要访问某页的数据&#xff0c;就会把完整的页数据加载到内存中【即使只访问页中的一…

springboot和springcloud的区别

1. ‌目的与功能‌ ‌1)Spring Boot‌: 主要用于快速构建独立的、生产级的 Spring 应用程序。它通过自动配置和嵌入式服务器等特性,简化了微服务的开发、启动和部署,使开发者能够专注于业务逻辑而非繁琐的配置。‌Spring Boot是一个快速开发的框架,旨在简化Java应用程序的开…

耘想WinNAS:以聊天交互重构NAS生态,开启AI时代的存储革命

一、传统NAS的交互困境与范式瓶颈 在传统NAS&#xff08;网络附加存储&#xff09;领域&#xff0c;用户需通过复杂的图形界面或命令行工具完成文件管理、权限配置、数据检索等操作&#xff0c;学习成本高且效率低下。例如&#xff0c;用户若需搜索特定文件&#xff0c;需手动…

在断网的时候,websocket 一直在CLOSING 状态

现象 websocket 先连接成功&#xff0c;然后断网。 由于维护了一套心跳机制&#xff0c;前端发起心跳&#xff0c;如果一段时间内没有收到服务端返回的心跳。则表示连接断开。 用心跳的方式处理断网的兜底情况。 然而&#xff0c;此时网络是断开的&#xff0c;在代码中直接调…

基于AWS的大模型调用场景:10大成本优化实战方案

大模型训练与推理是AI领域的计算密集型场景&#xff0c;如何在AWS上实现高性能与低成本的双重目标&#xff1f;本文从实例选型、弹性伸缩、存储优化等角度&#xff0c;分享10个经过验证的AWS成本优化策略&#xff0c;帮助企业节省30%以上成本。 一、大模型场景的成本痛点分析 计…

【网络原理】TCP/IP协议五层模型

目录 一. 协议的分层 二. OSI七层网络协议 三. TCP/IP五层网络协议 四. 网络设备所在分层 五. 封装 六. 分用 七. 传输中的封装和分用 八. 数据单位术语 一. 协议的分层 常见的分层为两种OSI七层模型和TCP/IP五层模型 为什么要协议分层&#xff1f; 在网络通信中&…

科技快讯 | 阿里云百炼MCP服务上线;英伟达官宣:CUDA 工具链将全面原生支持 Python

李飞飞团队最新AI报告&#xff1a;中美模型性能差距近乎持平 4月8日&#xff0c;斯坦福大学以人为本人工智能研究所发布《2025年人工智能指数报告》。报告显示&#xff0c;2023年AI性能显著提升&#xff0c;AI应用加速&#xff0c;投资增长&#xff0c;中美AI模型差距缩小。报告…

猫咪如厕检测与分类识别系统系列【三】融合yolov11目标检测

✅ 前情提要 家里养了三只猫咪&#xff0c;其中一只布偶猫经常出入厕所。但因为平时忙于学业&#xff0c;没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关&#xff0c;频繁如厕可能是泌尿问题&#xff0c;停留过久也可能是便秘或不适。为了更科学地了解牠…

2025年燃气证书:传承与发展的行业纽带

回溯历史长河&#xff0c;能源的利用与人类文明的发展息息相关。从远古时期的钻木取火&#xff0c;到如今广泛应用的燃气能源&#xff0c;每一次能源的变革都推动着社会的巨大进步。而在现代燃气行业蓬勃发展的背后&#xff0c;燃气从业人员资格证书正扮演着传承与发展的重要纽…

在Ubuntu下进行单片机开发是否需要关闭Secure Boot

1. Secure Boot的作用 功能&#xff1a;Secure Boot是UEFI的安全功能&#xff0c;旨在阻止未经验证的驱动或操作系统启动&#xff0c;防止恶意软件篡改引导过程。 影响范围&#xff1a;它主要限制的是操作系统启动阶段加载的内核级驱动&#xff08;如显卡驱动、虚拟化模块&…

国达陶瓷重磅推出陶瓷罗马柱外墙整装尖端新产品“冠岩臻石”

近日&#xff0c;记者在佛山国达建材有限公司&#xff08;以下简称国达陶瓷&#xff09;董事长杨建平处了解到&#xff0c;该公司重磅推出的“冠岩臻石”新产品&#xff0c;是属于陶瓷罗马柱外墙整装产品中的尖端产品。新产品自面市之后&#xff0c;深受高端用户的青睐与认可。…

【分享】Ftrans文件摆渡系统:既保障传输安全,又提供强集成支持

【分享】Ftrans文件摆渡系统&#xff1a;既保障传输安全&#xff0c;又提供强集成支持&#xff01; 在数字化浪潮中&#xff0c;企业对数据安全愈发重视&#xff0c;网络隔离成为保护核心数据的关键防线&#xff0c;比如隔离成研发网-办公网、生产网-测试网、内网-外网等。网络…

实验一 字符串匹配实验

一、实验目的 1&#xff0e;熟悉汇编语言编程环境和DEBUG调试程序的使用。 2&#xff0e;掌握键盘输入字符串的方法和分支程序的设计。 二、实验内容 编程实现&#xff1a;从键盘分别输入两个字符串&#xff0c;然后进行比较&#xff0c;若两个字符串的长度…

添加登录和注册功能

先写前端再写后端 前提&#xff1a;ideavue3mybatisspringBoot3前后端分离实现对一张表的增删改查&#xff08;完整代码版&#xff09;-CSDN博客 项目地址 1.添加一个Login.vue视图 <template><div class"login_container"><div class"login…

【Windows】系统安全移除移动存储设备指南:告别「设备被占用」弹窗

Windows系统安全移除移动存储设备指南&#xff1a;告别「设备被占用」弹窗 解决移动硬盘和U盘正在被占用无法弹出 一、问题背景 使用Windows系统时&#xff0c;经常遇到移动硬盘/U盘弹出失败提示「设备正在使用中」&#xff0c;即使已关闭所有可见程序。本文将系统梳理已验证…

Springboot下载文件, 文件名中文是乱码, 空格变加号

默认把文件名放上去, 中文会乱码, 文件名种有空格, 就会被截断 public void download(HttpServletResponse response){// 文件名先进行url编码, 避免乱码问题// 把用%20进行替换fileName URLEncoder.encode(fileName, "UTF-8").replace("", "%20&qu…