第十六届蓝桥杯大赛软件赛省赛第二场

第十六届蓝桥杯大赛软件赛省赛第二场

大家好。最近参加了第十六届蓝桥杯大赛软件赛省赛第二场 Python 大学 B 组的比赛,现在来和大家分享一下我的解题思路和代码实现。以下内容是我自己写的,可能对也可能错,欢迎大家交流讨论。

试题 A:密密摆放

问题描述:小蓝有一个大箱子,内部的长宽高分别是 200、250、240(单位:毫米),他要用这个大箱子来放一些同样大小的小盒子,小盒子的外部长宽高分别是 30、40、50(单位:毫米)。小盒子允许从各个方向旋转(包括可以平放和倒放)。请问小蓝最多可以在一个大箱子里面放多少个小盒子。

解题思路:这道题可以看作是一个空间利用问题。我们需要找到大箱子和小盒子的最优摆放方式,使得小盒子的数量最多。由于小盒子可以旋转,我们可以通过枚举小盒子的摆放方向,计算每种方向下大箱子最多能容纳的小盒子数量,然后取最大值即可。

代码实现

# 大箱子的长宽高
box = [200, 250, 240]
# 小盒子的长宽高
small_box = [30, 40, 50]# 枚举小盒子的摆放方向
max_count = 0
for i in range(3):for j in range(3):for k in range(3):# 计算每种方向下大箱子最多能容纳的小盒子数量count = (box[0] // small_box[i]) * (box[1] // small_box[j]) * (box[2] // small_box[k])max_count = max(max_count, count)print(max_count)

答案:384

我的答案:5,简直离谱我

试题 B:脉冲强度之和

问题描述:在蓝桥电子工坊,工程师小蓝正在设计一款智能脉冲生成器,用于驱动一种新型设备。该设备的运行依赖于特定的脉冲强度,用正整数 p 表示,其必须满足以下三个条件:

  1. 可由连续 10 个正整数之和组成:即存在一个正整数 k,使得脉冲强度 p = k + (k + 1) + (k + 2) + · · · + (k + 9)。
  2. 各个数位上的数字都相同:例如 1111、22222、333333 等。
  3. 数值不超过 20255202:即 1 ≤ p ≤ 20255202。
    通过计算所有符合条件的脉冲强度之和,小蓝能够优化设备运行模式。对此,请帮助他计算这一总和。

解题思路:这道题需要找到所有符合条件的脉冲强度,并将它们相加。我们可以先根据第一个条件,将脉冲强度表示为连续 10 个正整数之和的形式,即 p = 10k + 45。然后,根据第二个条件,枚举各个数位上的数字都相同的数,判断它们是否满足 p = 10k + 45 的形式,且数值不超过 20255202。

代码实现

# 初始化脉冲强度之和
total_sum = 0# 枚举各个数位上的数字都相同的数
for digit in range(1, 10):  # 数字范围为 1 到 9for length in range(1, 8):  # 数字长度范围为 1 到 7(因为 20255202 是 8 位数)# 构造各个数位上的数字都相同的数num = int(str(digit) * length)# 判断是否满足 p = 10k + 45 的形式if (num - 45) % 10 == 0 and num <= 20255202:total_sum += numprint(total_sum)

答案:6172835 无语了

试题 C:25 之和

问题描述:小蓝最近对求和很着迷,给定一个正整数 n,他想求从 n 开始的连续 25 个整数的和,即 n + (n + 1) + (n + 2) + · · · + (n + 24),请帮帮他吧。

解题思路:这道题可以直接使用等差数列的求和公式来解决。等差数列的求和公式为:S = (首项 + 末项) × 项数 / 2。在这个问题中,首项为 n,末项为 n + 24,项数为 25。

代码实现

n = int(input())
print(int(((n + n + 24) * 25) / 2))

试题 D:旗帜

问题描述:小蓝要画一个 LANQIAO 图形,并把这个图形做成一个旗帜。图形的形状为一个 h×w 的矩形,其中 h 表示图形的高,w 表示图形的宽。当 h = 5, w = 10 时,图形如下所示:
LANQIAOLAN
ANQIAOLANQ
NQIAOLANQI
QIAOLANQIA
IAOLANQIAO
图形的规律是:第一行用 LANQIAO 重复填入,第二行开始,每行向左移动一个字符,用 LANQIAO 重复填入。小蓝需要把图形中的每个字母都剪出来,以粘贴到旗帜上,他想知道,给定图形的高和宽,图形中有多少个 A。

解题思路:这道题可以通过模拟图形的生成过程来解决。首先,根据图形的规律,生成每一行的字符串,然后统计每一行中 A 的个数,最后将所有行中 A 的个数相加即可。

代码实现

h, w = map(int, input().split())
s = "LANQIAO"
res = []
for i in range(h):tmp = ""tmp += s[i % 7:]while len(tmp) < w:tmp += sres.append(tmp[:w])
ans = 0
for i in res:ans += (i.count('A'))
print(ans)

试题 E:消消乐

问题描述:小蓝正在玩一个叫 “一维消消乐” 的游戏。游戏初始时给出一个长度为 n 的字符串 S = S0S1 · · · Sn−1,字符串只包含字符 A 和 B。小蓝可以对这个字符串进行若干次操作,每次操作可以选择两个下标 i, j ∈ [0, n − 1],如果 i < j 且 Si = A 且 Sj = B,小蓝就可以把它们同时消掉。小蓝想知道在经过若干次操作后,直到无法对字符串继续进行操作时,字符串最多剩下多少个字符。

解题思路:这道题可以通过贪心算法来解决。从左到右遍历字符串,找到第一个 A 和最后一个 B,将它们消掉,然后继续寻找下一个 A 和 B,直到无法继续消掉为止。最后剩下的字符数量就是答案。

代码实现

S = input()
n = len(S)
ans = n
i, j = 0, n - 1
while i < j:while S[i] != 'A' and i < n:i += 1while S[j] != 'B' and j >= 0:j -= 1if i < j and S[i] == 'A' and S[j] == 'B':ans -= 2i += 1j -= 1
print(ans)

试题 F:数列差分

问题描述:小蓝有两个长度均为 n 的数列 A = {a1, a2, · · ·, an} 和 B = {b1, b2, · · ·, bn},将两个数列作差定义为 C = A − B = {c1 = a1 − b1, c2 = a2 − b2, · · ·, cn = an − bn}。小蓝将对数列 B 进行若干次操作,每次操作可以将数列 B 中的任意一个数更改为任意一个整数。在进行完所有操作后,小蓝可以按任意顺序将数列 B 重排,之后再计算数列 C。小蓝想知道,最少操作多少次可以使得数列 C 中的所有数都为正整数。

解题思路:这道题可以通过排序和贪心算法来解决。首先,将数列 A 和 B 按照从小到大的顺序排序。然后,从左到右遍历数列 A 和 B,对于每个位置 i,如果 A[i] - B[i] <= 0,则需要对 B[i] 进行操作,将其更改为一个更小的数,使得 A[i] - B[i] > 0。最后,统计需要操作的次数即可。

代码实现

n = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
B.sort(reverse=True)
res = 0
flag = [False] * n
for j in range(n):is_ok = Falsefor i in range(n):if A[j] - B[i] > 0 and not flag[i]:flag[i] = Trueis_ok = Truebreakif not is_ok:res += 1
print(res)

试题 G:树上寻宝

问题描述:小蓝正在一棵含有 n 个结点的树的根结点 1 上,他准备在这棵树上寻宝。结点 i 上有一个物品,价值为 wi。然而,小蓝每次寻宝只能从根节点出发走不超过 k 步,每步只能选择走 1 条边或者 2 条边,之后会自动拾取最终停留的结点上的物品并被传送回根结点。请求出小蓝最终能获得的物品的总价值。

解题思路:这道题可以通过深度优先搜索(DFS)来解决。从根结点出发,使用 DFS 遍历树,记录每个结点的深度。在遍历过程中,如果当前结点的深度不超过 k,则将该结点的物品价值加入总价值中。最后,返回总价值即可。

代码实现

from collections import defaultdictn,k=map(int,input().split())
# print(n,k)
value=list(map(int,input().split()))
# print(value)
tree=defaultdict(list)
# tree=dict(list)
for i in range(n-1):a,b=map(int,input().split())# print(a,b)tree[a].append(b)# print(tree[a])
# print()
# print(tree)
path=defaultdict(list)#当前的节点索引 i 当前已经走过多少边 j
# now=1
def dfs(i,j):if j>k*2:return path[j].append(i)for w in (tree[i]):dfs(w,j+1)dfs(1,0)
S=set()
for i in range(0,k*2+1):# print(path[i])for x in path[i]:S.add(x)
# print(S)
res=0
# print(value)
for i in S:res+=value[i-1]
print(res)# print(path)'''
7 1
1 1 1 1 1 1 1
1 2
1 3
2 4
2 5
3 6
3 7''''''
8 2
6 3 3 1 5 4 3 4
1 2
2 3
2 4
4 5
5 6
6 7
7 8
'''

试题 H:破解信息

问题描述:在遥远的未来,星际旅行已经成为常态。宇航员小蓝在一次探险任务中,意外发现了一个古老的太空遗迹。遗迹中存放着一个数据存储器,里面记录着一段加密的信息。经过初步分析,小蓝发现这段信息可以被表示为一个字符串 S,而解密的关键,在于找出 S 中字典序最大的回文子序列。

解题思路:这道题可以通过动态规划来解决。首先,定义一个二维数组 dp,其中 dp[i][j] 表示字符串 S 从第 i 个字符到第 j 个字符的最长回文子序列。然后,根据动态规划的状态转移方程,计算 dp 数组的值。最后,从 dp 数组中找到字典序最大的回文子序列即可。

代码实现


S=input()n=len(S)
i,j=0,n-1
left=[]
right=[]
pre=n-1
path=[]for i in range(n):while i<=j:if i==j:left.append(S[i])right=right[::-1]huiwen=left+rightpath.append(huiwen)breakleft.append(S[i])while S[j]!=left[-1] and i<j:j-=1if S[j]==left[-1] and i<j:right.append(S[j])pre=jj-=1else:left.pop(-1)i=i+1j=prei+=1right=right[::-1]huiwen=left+rightpath.append(huiwen)left=[]right=[]j=n-1ans=[]
for i in path:ch=""for j in i:ch+=jans.append(ch)
ans.append(max(list(S)))print(max(ans))

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

硬件须知的基本问题2

目录 1、典型电路 1. DC5V 转 DC3.3V 电路 2. 通信电路 2、STM32F103RCT6 最小系统如何设计搭建电路 1. 电源电路 2. 复位电路 3. 时钟电路 4. 下载电路 5. 单片机连接连接 3、请列举你所知道的二极管型号&#xff1f; 1. 整流二极管 2. 小信号二极管 3. 肖特基二极管 4. 超…

力扣HOT100——102.二叉树层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] /*** Definition for a bi…

CSS 定位学习笔记

一、定位概述 CSS 定位是控制 HTML 元素在页面中位置的核心技术&#xff0c;允许元素脱离正常文档流&#xff0c;实现复杂布局效果。 二、定位类型对比 定位类型属性值参考基准是否脱离文档流常用场景静态定位static无否默认布局相对定位relative自身原位置否元素微调绝对定…

Threejs中顶视图截图

Threejs中顶视图截图 一般项目中的每个模型&#xff0c;都需要有一张对应的图片&#xff0c;一般是顶视图&#xff0c;在对应的2D场景场景中展示。以下分享一个实现方式&#xff0c;先将清空模型材质的纹理&#xff0c;把颜色设置为白色&#xff0c;使用正交相机截取顶视图&am…

深度探索:DeepSeek赋能WPS图表绘制

一、研究背景 在当今数字化信息爆炸的时代&#xff0c;数据处理与可视化分析已成为众多领域研究和决策的关键环节。随着数据量的急剧增长和数据维度的不断丰富&#xff0c;传统的数据可视化工具在应对复杂数据时逐渐显露出局限性。Excel作为广泛应用的电子表格软件&#xff0c;…

第11章 面向分类任务的表示模型微调

​​​​​​第1章 对大型语言模型的介绍第2章 分词和嵌入第3章 解析大型语言模型的内部机制第4章 文本分类第5章 文本聚类与主题建模第6章 提示工程第7章 高级文本生成技术与工具第8章 语义搜索与检索增强生成第9章 多模态大语言模型第10章 构建文本嵌入模型第12章 微调生成模…

4.换行和续写

一.FileOutputStream写出数据的两个小问题&#xff1a; 问题一&#xff1a;换行 假设在本地文件中要输出数据aweihaoshuai 666&#xff0c;在输出这个数据时要换行写出&#xff0c;如下图&#xff1a; 问题二&#xff1a;续写 假设在一个文本文件中已经存在数据aweihaoshuai…

联易融受邀参加上海审计局金融审计处专题交流座谈

近日&#xff0c;联易融科技集团受邀出席了由上海市审计局金融审计处组织的专题交流座谈&#xff0c;凭借其在供应链金融领域的深厚积累和创新实践&#xff0c;联易融为与会人员带来了精彩的分享&#xff0c;进一步加深现场对供应链金融等金融发展前沿领域的理解。 在交流座谈…

SOC估算:开路电压修正的安时积分法

SOC估算&#xff1a;开路电压修正的安时积分法 基本概念 开路电压修正的安时积分法是一种结合了两种SOC估算方法的混合技术&#xff1a; 安时积分法&#xff08;库仑计数法&#xff09; - 通过电流积分计算SOC变化 开路电压法 - 通过电池电压与SOC的关系曲线进行校准 方法原…

代码随想录打卡|Day27(合并区间、单调递增的数字、监控二叉树)

贪心算法 Part05 合并区间 力扣题目链接 代码随想录链接 视频讲解链接 题目描述&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0…

PostgreSQL的扩展 pg_cron

PostgreSQL的扩展 pg_cron pg_cron 是 PostgreSQL 的一个开源扩展&#xff0c;它允许在数据库内部使用 cron 语法调度定期任务&#xff0c;是最接近 Oracle DBMS_SCHEDULER 的解决方案。 一 安装与配置 1 安装方法 下载路径&#xff1a; https://github.com/citusdata/pg_…

卷积神经网络迁移学习:原理与实践指南

引言 在深度学习领域&#xff0c;卷积神经网络(CNN)已经在计算机视觉任务中取得了巨大成功。然而&#xff0c;从头开始训练一个高性能的CNN模型需要大量标注数据和计算资源。迁移学习(Transfer Learning)技术为我们提供了一种高效解决方案&#xff0c;它能够将预训练模型的知识…

图论---朴素Prim(稠密图)

O( n ^2 ) 题目通常会提示数据范围&#xff1a; 若 V ≤ 500&#xff0c;两种方法均可&#xff08;朴素Prim更稳&#xff09;。 若 V ≤ 1e5&#xff0c;必须用优先队列Prim vector 存图。 // 最小生成树 —朴素Prim #include<cstring> #include<iostream> #i…

Spring-Cache替换Keys为Scan—负优化?

背景 使用ORM工具是往往会配合缓存框架实现三级缓存提高查询效率&#xff0c;spring-cache配合redis是非常常规的实现方案&#xff0c;如未做特殊配置&#xff0c;CacheEvict(allEntries true) 的批量驱逐方式&#xff0c;默认使用keys的方式查询历史缓存列表而后delete&…

【N8N】Docker Desktop + WSL 安装过程(Docker Desktop - WSL update Failed解决方法)

背景说明&#xff1a; 因为要用n8n&#xff0c;官网推荐这个就下载了&#xff0c;然后又是一堆卡的安装问题记录过程。 1. 下载安装包 直接去官网Get Docker | Docker Docs下载 下载的是第一个windows - x86_64. &#xff08;*下面那个beta的感觉是测试版&#xff09; PS&am…

RT Thread 发生异常时打印输出cpu寄存器信息和栈数据

打印输出发生hardfault时,当前栈十六进制数据和cpu寄存器信息 在发生 HardFault 时,打印当前栈的十六进制数据和 CPU 寄存器信息是非常重要的调试手段。以下是如何实现这一功能的具体步骤和示例代码。 1. 实现 HardFault 处理函数 我们需要在 HardFault 中捕获异常上下文,…

【安装neo4j-5.26.5社区版 完整过程】

1. 安装java 下载 JDK21-windows官网地址 配置环境变量 在底下的系统变量中新建系统变量&#xff0c;变量名为JAVA_HOME21&#xff0c;变量值为JDK文件夹路径&#xff0c;默认为&#xff1a; C:\Program Files\Java\jdk-21然后在用户变量的Path中&#xff0c;添加下面两个&am…

android jatpack Compose 多数据源依赖处理:从状态管理到精准更新的架构设计

Android Compose 多接口数据依赖管理&#xff1a;ViewModel 状态共享最佳实践 &#x1f4cc; 问题背景 在 Jetpack Compose 开发中&#xff0c;经常遇到以下场景&#xff1a; 页面由多个独立接口数据组成&#xff08;如 Part1、Part2&#xff09;Part2 的某些 UI 需要依赖 P…

面试之消息队列

消息队列场景 什么是消息队列&#xff1f; 消息队列是一个使用队列来通信的组件&#xff0c;它的本质就是个转发器&#xff0c;包含发消息、存消息、消费消息。 消息队列怎么选型&#xff1f; 特性ActiveMQRabbitMQRocketMQKafka单机吞吐量万级万级10万级10万级时效性毫秒级…

GStreamer 简明教程(十一):插件开发,以一个音频生成(Audio Source)插件为例

系列文章目录 GStreamer 简明教程&#xff08;一&#xff09;&#xff1a;环境搭建&#xff0c;运行 Basic Tutorial 1 Hello world! GStreamer 简明教程&#xff08;二&#xff09;&#xff1a;基本概念介绍&#xff0c;Element 和 Pipeline GStreamer 简明教程&#xff08;三…