CSDN 竞赛 32 期
CSDN 竞赛 32 期
- 1、题目名称:传奇霸业
- 2、题目名称:严查枪火
- 3、题目名称:蚂蚁家族
- 4、题目名称:运输石油
- 小结
1、题目名称:传奇霸业
传奇霸业,是兄弟就来干。 小春(HP == a)遇到了一只黄金哥布林(HP == x)。 小春每次能对哥布林造成b点伤害,哥布
林每次能对小春造成y点伤害。 作为玩家的小春怎么可能随便让哥布林打死呢!他有治疗神药,每次能恢复c点HP。 HP无
上限。 小春需要操作多少次才能打死哥布林?(治疗+攻击)
又一个水多加面,面多加水的问题,这个没什么好说的
class Solution:def __init__(self) -> None:passdef solution(self, a, b, c, x, y):result = None# TODO: 请在此编写代码n = 0while True:if b >= x:n += 1breakif y >= a: # 补血的回合n += 1a = a - y + ccontinuen += 1x -= ba -= y # 别忘记怪物会攻击小春result = nreturn result
2、题目名称:严查枪火
X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。
小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)
开始,老顾以为是包含这些关键字的都需要关押,结果一运行,0%通过率,纳闷了,用 js 版本的正则测了下用例, /ak|m4a1|skr/gi.test(),还是 0%,改成/^(ak|m4a1|skr)$/gi.test() 结果100%了。。。
得了,这要严格相等啊,忽略大小写那种,至于用例中有没有大写的,我没专门测试,顺手就忽略大小写了
class Solution:def __init__(self) -> None:passdef solution(self, n, vector):result = None# TODO: 请在此编写代码result = 0for i in range(n):vector[i] = vector[i].lower()if vector[i] in ['ak','m4a1','skr']:result += 1return result
3、题目名称:蚂蚁家族
小蚂蚁群是一个庞大的群体,在这个蚂蚁群中有n只小蚂蚁 ,为了保证所有蚂蚁在消息传送的时候都能接收到消息,需要
在他们之间建立通信关系。就是要求小蚂蚁都可以通过多只或者直接联系到其他人。 已知几条小蚂蚁之间有通信关系,请
问还需要再新建至少多少条关系?
这明显就是要合并集合了,开始老顾是以为 n 只蚂蚁就是 1 到 n,结果有个用例,有个蚂蚁超出 n 这个数字了。。。。结果老顾第一版生成蚂蚁序列 {x:set() for x in range(n)} 在记录蚂蚁的关系时,索引溢出了。。。有一个用例,蚂蚁数量是 665 ,他部分蚂蚁的数字,是666。。。。真是个老六,坑人呢。
不知道其他人是怎么解决的这个问题,老顾干脆的使用最土的办法,所有出现在关系里的蚂蚁才进行记录,之后再用总数减去出现的蚂蚁数量,得到偷懒的蚂蚁数量。
另外,这个是情急下写得,没有优化过,效率就那么回事,大家看看就好
class Solution:def __init__(self) -> None:passdef solution(self, n, m, vector):result = None# TODO: 请在此编写代码if m == 0:return n - 1s = {} # 准备放集合的字典for i in range(m): # 根据关系,分别创建字典主键及集合x,y = vector[i]if x not in s:s[x] = set()if y not in s:s[y] = set()s[x].add(x)s[x].add(y)s[y].add(x)s[y].add(y)while True: # 对集合进行合并b = Trueks = [x for x in s.keys()] # 获取所有字典主键for i in ks:if i not in s: # 如果主键不存在就跳过continuearr = list(s[i]) # 获得主键下的所有集合for j in arr:if j != i and j in s: # 把集合内存在的主键都合并到一起s[i] = s[i].union(s[j])del s[j] # 被合并的主键删掉b = Falseif b: # 如果有合并动作,则继续循环,否则跳出breakresult = len(s) - 1 # 需要添加的关系为剩余主键数量减1f = set() # 最后,修正一下,万一某个蚂蚁没有任何关系,那么就需要补回来for i in s:f = f.union(s[i])result += n - len(f) # len(f) 为所有出现在关系中的蚂蚁数量,n为总数量,他们的差就是没有出现在关系中的蚂蚁数量return result
4、题目名称:运输石油
某石油公司需要向A、B两地运输石油。两地的需求量不同,而一辆车只能装载一定量的石油。经过计算A地需要a辆车,B
地需要b辆车运输才能满足需求。现在一共有n辆车分布在各地,每辆车前往A、B两地运输石油均可以获得一定不等的利
润。 现在请你安排a辆车前往A地,b辆车前往B地运输石油,使得在满足A、B两地石油需求的前提下,获得最大的利润。
每辆车只能前往一地运输石油。
这个题目,老顾只有70%的通过率,没有思路啊,纯暴力猜测的结果
老顾的思路是这样 n 辆车,到 a 地利润减去到 b 地利润,按这个利润差排序,
a - b 大的去 a 地,a - b 小的去 b 地,很简单的做法,后边应该能优化出来,但老顾没再继续优化,需要从 n - a - b 剩余的部分,挑选各自到 a 利润高的和到 b 利润高的进行替换原排序中的内容
class Solution:def __init__(self) -> None:passdef solution(self, n, a, b, vector):result = None# TODO: 请在此编写代码result = 0vector.sort() # 按 a 地利润排序arr = [[x[0] - x[1]] + x for x in vector] # 生成利润差数组arr.sort() # 按利润差排序result = sum([x[2] for x in arr[:b]]) + sum([x[1] for x in arr[-a:]]) # 利润差是从小到大排序的,所以选取前 b 个作为去b 的,后a 个是去 a 的,计算这些车辆的利润和return result
小结
前两题都是水题。
第三题见过类似的,好像前两期竞赛有类似题目,当时老顾没有做出来,合并集合有遗漏,这次就上心了。
第四题是真不会了。。。这个思路也不知道对不对,等后边刷 leetcode 或每日一练碰到这个题目的时候再进行补全的验证

ps: 题外话
这次竞赛,好像大佬不多啊,一共才5个满分的,这又是运气好,碰到大佬出去玩了。
答题选择使用 python 是数组操作,集合操作都比较简单,简直就是答题最方便的环境了。
相关文章:
CSDN 竞赛 32 期
CSDN 竞赛 32 期1、题目名称:传奇霸业2、题目名称:严查枪火3、题目名称:蚂蚁家族4、题目名称:运输石油小结1、题目名称:传奇霸业 传奇霸业,是兄弟就来干。 小春(HP a)遇到了一只黄金哥布林(HP x)。 小春每…...
【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
spring boot maven打包jar包太大,怎么办?这个方法解决你的烦恼
在springboot maven项目中,有两种打包方式,一种是war包,一种是jar,今天我们讲一下jar的打包方式。但是在jar包打包只要我们发现,我们的项目jar太大了,每次上传到服务器的时候非常的慢,接下来我们…...
Spring之AOP理解及使用
文章目录AOP是什么AOPSpring的通知类型1.Before通知2. AfterReturning通知3.AfterThrowing通知4. After通知5. Around通知动态代理JDK动态代理CGLib动态代理动态代理的代码展示AOP使用切面类的配置最后大家好,我是Leo!今天给大家带来的是关于Spring AOP的…...
微信小程序和webview使用postMessage交互
小程序和webview能交互,但是没有你想的那个完美小程序向webview传递参数只能使用url携带参数webview向小程序传递参数可以使用postMessage, 但是注意了,postMessage只会在特定的时机执行,请看官方文档由此可见,如果你想点击webvie…...
pytorch-自动求导机制,构建计算图进行反向传播,需要注意inplace操作导致的报错,梯度属性变化
PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢?一是 PyTorch 提供了自动求导机制,二是对 GPU 的支持。由此可见,自动求导 (autograd) 是 PyTorch,乃至其他大部分深度学习框架中的重…...
【Project】项目管理软件学习笔记
一、前言使用Project制定项目计划步骤大致如下:以Project2013为例,按照上图步骤指定项目计划。二、实施2.1 创建空白项目点击文件——新建——空白项目,即完成了空白项目的创建,在此我把该项目保存为60mm项目管理.mpp,…...
【算法设计-分治思想】快速幂与龟速乘
文章目录1. 快速幂2. 龟速乘3. 快速幂取模4. 龟速乘取模5. 快速幂取模优化1. 快速幂 算法原理: 计算 311: 311 (35)2 x 335 (32)2 x 332 3 x 3仅需计算 3 次,而非 11 次 计算 310: 310 (35)235 (32)2 x 332 3 x 3仅需计算…...
Kafka(十一) 如何保证数据的不重复和不丢失
数据不丢失 1)从生产端:acks -1,(ack应答机制)从生产端到节点端,当所有isr集合里的节点备份完毕后返回成功; 2)从节点端:每个partition至少需要一个isr节点࿰…...
解决树莓派 bullseye (11) 系统无法通过 xrdp 远程连接的问题
我手上有一台树莓派 4B,使用官方镜像烧录器烧录老版本操作系统 buster (10) 时可以正常通过 Windows 远程桌面连接上,但换成最新的 bullseye (11) 系统后却无法正常连接远程桌面。 问题复现: 使用官方镜像烧录器烧录,配置用户名为…...
微信公众号历史作品定向采集
最近有遇到微信公众号历史作品采集的需求,这里做一下记录, 登录自己注册好的的微信公众号后台进入创作界面,点击右上角的引用: 弹出如下界面: 选择查找公众号文章,输入要查找的公众号: 回车: 同时就可以打开F12开始抓包,选择公众号点击进入: appmsg?action=li…...
Vue学习笔记(3)
3.1 计算属性和监视属性 3.1.1 计算属性 计算属性是一种计算值的方式,可以根据其他属性的值来动态地计算新的属性值。计算属性可以缓存计算结果,当依赖的属性发生改变时,才会重新计算。在Vue中,可以使用computed选项来定义计算属…...
Marshmallow 库
文章目录Marshmallow 库介绍使用序列化反序列化参数介绍schema参数fields 参数钩子函数内置验证器Meta 属性Marshmallow 库 介绍 marshmallow是一个用来将复杂的orm对象与python原生数据类型之间相互转换的库,简而言之,就是实现object -> dict&#…...
【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?
前言:15年Google提出Batch Normalization,成为深度学习最成功的设计之一,18年MIT团队将原论文中提出的BN层的作用进行了一一反驳,重新揭示BN层的意义 2015年Google团队论文:【here】 2018年MIT团队论文:【h…...
re.sub()用法的详细介绍
一、前言 在字符串数据处理的过程中,正则表达式是我们经常使用到的,python中使用的则是re模块。下面会通过实际案例介绍 re.sub() 的详细用法,该函数主要用于替换字符串中的匹配项。 二、函数原型 首先从源代码来看一下该函数原型…...
【Python数据挖掘入门】2.2文本分析-中文分词(jieba库cut方法/自定义词典load_userdict/语料库分词)
中文分词就是将一个汉字序列切分成一个一个单独的词。例如: 另外还有停用词的概念,停用词是指在数据处理时,需要过滤掉的某些字或词。 一、jieba库 安装过程见:https://blog.csdn.net/momomuabc/article/details/128198306 ji…...
Meta利用视觉信息来优化3D音频模型,未来将用于AR/VR
我们知道,Meta为了给AR眼镜打造智能助手,专门开发了第一人称视觉模型和数据集。与此同时,该公司也在探索一种将视觉和语音融合的AI感知方案。相比于单纯的语音助手,同时结合视觉和声音数据来感知环境,可进一步增强智能…...
openlayers加载离线地图并实现深色地图
问题背景 我们自己一直使用的openlayergeoserver自己发布的地图,使用的是矢量地图。但是由于政府地图大都使用为天地图,所以需要将geoserver的矢量地图更改为天地图,并且依旧是搭配openlayers来使用。 解决步骤 一:加载离线地图&a…...
socket,tcp,http三者之间的区别和原理
目录 一、OSI模型也称七层网络模型 1、TCP/IP连接 1.1三次握手与四次挥手的简单理解:(面试重点) 1.2面试考题:如果已经建立了连接,但是客户端突然出现故障了怎么办? 1.3 socket、tcp、http三者之间有什…...
红日(vulnstack)1 内网渗透ATTCK实战
环境准备 靶机链接:百度网盘 请输入提取码 提取码:sx22 攻击机系统:kali linux 2022.03 网络配置: win7配置: kali配置: kali 192.168.1.108 192.168.111.129 桥接一块,自定义网卡4 win7 1…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
