第十六届蓝桥杯大赛软件赛省赛 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)

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

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

相关文章

C++基础精讲-05

文章目录 1.构造函数初始化列表1.1 初始化列表的使用1.2 有参构造函数的默认值 2.对象所占空间大小2.1 大小的计算2.2 内存对齐机制 3. 析构函数3.1 基本概念3.2 总结 4.valgrind工具集4.1 介绍4.2 memcheck的使用 5. 拷贝构造函数5.1 拷贝构造函数定义5.2 浅拷贝/深拷贝5.3 拷…

文章记单词 | 第28篇(六级)

一&#xff0c;单词释义 shirt /ʃɜːt/ n. 衬衫&#xff1b;衬衣commonly /ˈkɒmənli/ adv. 通常地&#xff1b;一般地&#xff1b;普遍地pick /pɪk/ v. 挑选&#xff1b;采摘&#xff1b;捡起&#xff1b;选择&#xff1b;n. 选择&#xff1b;鹤嘴锄&#xff1b;精华com…

安装低版本Pytorch GPU

网上很多教程都是自动安装&#xff0c;不指定版本&#xff0c;其实有大问题。而且torch、torchvision、torchaudio的版本必须是对应&#xff0c;所以一旦版本不对&#xff0c;就可能会出现各种问题。 其实Pytorch官网就已经给出了安装低版本的教程 登入Pytorch官网 点击previo…

2025认证杯挑战赛B题【 谣言在社交网络上的传播 】原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了认证杯数学中国数学建模网络挑战赛第一阶段B题目谣言在社交网络上的传播完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半…

并发编程--互斥锁与读写锁

并发编程–互斥锁与读写锁 文章目录 并发编程--互斥锁与读写锁1. 基本概念2. 互斥锁2.1 基本逻辑2.2 函数接口2.3示例代码12.4示例代码2 3. 读写锁3.1 基本逻辑3.2示例代码 1. 基本概念 互斥与同步是最基本的逻辑概念&#xff1a; 互斥指的是控制两个进度使之互相排斥&#x…

亲手打造可视化故事线管理工具:开发全流程、难点突破与开发过程经验总结

亲手打造可视化故事线管理工具&#xff1a;开发全流程、难点突破与开发过程经验总结 作为还没入门的业余编程爱好者&#xff0c;奋战了2天&#xff0c;借助AI开发一款FLASK小工具&#xff0c;功能还在完善中&#xff08;时间轴可以跟随关联图缩放&#xff0c;加了一个用C键控制…

网络攻防技术-虚拟机安装和nmap端口扫描

文章是博主上实验课做的实验和心得体会&#xff0c;有些高深的地方我可能也比较一知半解&#xff0c;欢迎来交流。全文参考课程所习得&#xff0c;纯粹梳理知识点和分享&#xff0c;如有不妥请联系修改。 文章侧重实验部分&#xff0c;也会讲述实验相关的理论知识。理论后期如果…

中断的硬件框架

今天呢&#xff0c;我们来讲讲中断的硬件框架&#xff0c;这里会去举3个开发板&#xff0c;去了解中断的硬件框架&#xff1a; 中断路径上的3个部件&#xff1a; 中断源 中断源多种多样&#xff0c;比如GPIO、定时器、UART、DMA等等。 它们都有自己的寄存器&#xff0c;可以…

动手学深度学习:手语视频在VGG模型中的测试

前言 其他所有部分同上一篇AlexNet一样&#xff0c;所以就不再赘诉&#xff0c;直接看VGG搭建部分。 模型 VGG是第一个采取块进行模块化搭建的模型。 def vgg_block(num_convs,in_channels,out_channels):layers[]for _ in range(num_convs):layers.append(nn.Conv2d(in_ch…

信息学奥赛一本通 1498:Roadblocks | 洛谷 P2865 [USACO06NOV] Roadblocks G

【题目链接】 ybt 1498&#xff1a;Roadblocks 洛谷 P2865 [USACO06NOV] Roadblocks G 【题目考点】 1. 图论&#xff1a;严格次短路径 严格次短路的路径长度必须大于最短路的路径长度。 非严格次短路的路径长度大于等于最短路的路径长度。 【解题思路】 每个交叉路口是一…

Arm CPU安全通告:基于TrustZone的Cortex-M系统面临多重故障注入攻击

安全之安全(security)博客目录导读 目录 一、概述 二、致谢 三、参考文献​​​​​​Black Hat USA 2022 | Briefings Schedule 四、版本历史 一、概述 Arm注意到BlackHat 2022大会官网发布的演讲摘要《糟糕..&#xff01;我又一次故障注入成功了&#xff01;——如何突…

【频域分析】包络分析

【频域分析】包络分析 算法配置页面 可以一键导出结果数据 报表自定义绘制 获取和下载【PHM学习软件PHM源码】的方式 获取方式&#xff1a;Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc

ElMessage

以下是关于 ElMessage 的详细说明和使用方法&#xff1a; 什么是 ElMessage ElMessage 是 Element Plus 提供的一个全局消息提示组件&#xff0c;用于在页面上显示短暂的消息提示。它可以用于显示成功、警告、错误等不同类型的消息。 基本用法 1. 引入 ElMessage 在使用 E…

全面解析 KaiwuDB 数据库的数据类型

在现代数据库管理系统中&#xff0c;数据类型的选择至关重要。它不仅决定了数据存储的效率&#xff0c;还影响到查询的速度和数据的一致性。KaiwuDB&#xff0c;作为一款开源的分布式数据库&#xff0c;提供了多种数据类型&#xff0c;以适应不同的业务需求和存储要求。本文将全…

【计网】网络交换技术之分组交换(复习自用,重要1)

复习自用的&#xff0c;处理得比较草率&#xff0c;复习的同学或者想看基础的同学可以看看&#xff0c;大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记&#xff1a; 电路交换 报文交换 一、分组交换的定义 1.定义 分组交换&#x…

C++ STL及Python中等效实现

一. STL 概述 STL 包含以下核心组件&#xff1a; 容器&#xff08;Containers&#xff09;&#xff1a;存储数据的结构&#xff0c;如数组、链表、集合等。迭代器&#xff08;Iterators&#xff09;&#xff1a;用于遍历容器的接口&#xff0c;类似指针。算法&#xff08;Alg…

python-63-前后端分离之图书管理系统的Flask后端

文章目录 1 flask后端1.1 数据库实例extension.py1.2 数据模型models.py1.3 .flaskenv1.4 app.py1.5 运行1.6 测试链接2 关键函数和文件2.1 请求视图类MethodView2.2 .flaskenv文件3 参考附录基于flask形成了图书管理系统的后端,同时对其中使用到的关键文件.flaskenv和函数类M…

蓝桥杯真题——好数、R格式

目录 蓝桥杯2024年第十五届省赛真题-好数 【模拟题】 题目描述 输入格式 输出格式 样例输入 样例输出 提示 代码1&#xff1a;有两个案例过不了&#xff0c;超时 蓝桥杯2024年第十五届省赛真题-R 格式 【vector容器的使用】 题目描述 输入格式 输出格式 样例输入…

Python中NumPy的索引和切片

在数据科学和科学计算领域&#xff0c;NumPy是一个功能强大且广泛使用的Python库。它提供了高效的多维数组对象以及丰富的数组操作函数&#xff0c;其中索引和切片是NumPy的核心功能之一。通过灵活运用索引和切片操作&#xff0c;我们可以轻松访问和操作数组中的元素&#xff0…

设计模式:策略模式 - 消除复杂条件判断的利器

一、什么是策略模式&#xff1f; 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它将一组算法或业务逻辑封装为独立的策略类&#xff0c;使这些策略可以互换使用&#xff0c;并通过上下文类动态选择合适的策略。 核心思想 • 将不同的行…