当前位置: 首页 > news >正文

[LeetCode复盘] LCCUP‘23春季赛 20230422

[LeetCode复盘] LCCUP'23春季赛 20230422

    • 一、总结
    • 二、 1. 补给马车
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、2. 探险营地
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、 3. 最强祝福力场
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、 4. 传送卷轴
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、 5. 魔法棋盘(以后补)
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 七、参考链接

一、总结

  • 半年前秋季赛3题,这次春季赛4题,有进步!
  • T1 模拟。
  • T2 模拟。
  • T3 暴力枚举/扫描线。
  • T4 最短路+二分。
  • T5 状压DP。
    在这里插入图片描述

在这里插入图片描述

二、 1. 补给马车

链接: 1. 补给马车

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

  • py的话,可以直接切片赋值,非常方便。
  • 复杂度n方。

3. 代码实现

class Solution:def supplyWagon(self, a: List[int]) -> List[int]:n = len(a)if n <= 3:return [sum(a)]d = n - n // 2 for _ in range(d):i = 0mx = a[0]+a[1]for j in range(1,len(a)-1):s = a[j]+a[j+1]if s < mx:mx = s i = j a[i:i+2] = [mx]return a

三、2. 探险营地

链接: 2. 探险营地

1. 题目描述

在这里插入图片描述

2. 思路分析

贴模板。

  • 都乘到一起找质因数就是分别找质因数然后去重,因此用set记录并集即可。

3. 代码实现

class Solution:def adventureCamp(self, a: List[str]) -> int:s = set(x for x in a[0].split('->') if x)# print(s)ans = -1 mx = 0for i in range(1,len(a)):p =  set(x for x in a[i].split('->') if x)x = len(s)s |= padd = len(s) - x if add > mx:mx = add ans = i return ans 

四、 3. 最强祝福力场

链接: 3. 最强祝福力场

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 扫描线不会,但这题n=100,因此可以暴力。
  • 由于最优矩形一定是切出来的,因此左边一定是某个矩形的左边,下边一定是某个矩形的下边。
  • 那么最优矩形的左下角是可以枚举的。具体见代码。
  • 枚举每个左下角,计算它在几个矩形里即可。
  • 每个数据都乘2,避免浮点运算。

3. 代码实现

class Solution:def fieldOfGreatestBlessing(self, a: List[List[int]]) -> int:for i,(x,y,d) in enumerate(a):a[i] = (x*2,y*2,d*2)xx = []yy = []for x,y,d in a:xx.append(x-d//2)yy.append(y-d//2)ans = 1for x1 in xx:for y1 in yy:cnt = 0for x,y,d in a:if x-d//2<=x1<=x+d//2 and y-d//2<=y1<=y+d//2:cnt += 1ans = max(ans,cnt)return ans      

五、 4. 传送卷轴

链接: 4. 传送卷轴

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 题目只问传送后到T的步数,因此可以直接先从T出发计算最短路,如果到不了S直接返回-1。
    • 这个最短路作为玩家被传送后,带着debuff到T的步数。
  • 魔王可以在s-t的任意格子上使玩家传送到镜像,注意,必须是玩家在’.‘(不包括S),镜像的位置必须是’.'/‘S’。
    • 那么可以预处理每个位置的权值p,玩家经过这个位置的话,魔王的操作可以让玩家步骤变成max{镜像位置的dis},若这个位置不能进行传送,则p=0,因为只计算传送后的距离。
  • 预处里完P后,玩家需要找一条s->t的连通路径,魔王可以选这个路径上的最大位置。那么玩家的目的就是最小化路径上的最大值。警觉,可以二分。
    • 设这个最大值是x,那么路径上的所有值需要<=x,显然x越大越能满足;x越小越不可以满足。
  • 或者可以dij,直接用堆,玩家每次都选最小的相邻位置并更新mx,走到T即可。代码会短一些

3. 代码实现

DIRS = [(0,1),(0,-1),(1,0),(-1,0)]
class Solution:def challengeOfTheKeeper(self, g: List[str]) -> int:m,n = len(g),len(g[0])dis = [[inf]*n  for _ in range(m)]def inside(x,y):return 0<=x<m and 0<=y<n        def find_t():for i in range(m):for j in range(n):if g[i][j] == 'T':return i,j def find_s():for i in range(m):for j in range(n):if g[i][j] == 'S':return i,j tx,ty = find_t()sx,sy = find_s()dis[tx][ty] = 0q = deque([(tx,ty)])while q:x,y = q.popleft()d = dis[x][y] + 1for dx,dy in DIRS:a,b = x+dx,y+dyif inside(a,b) and dis[a][b] > d and g[a][b] != '#':dis[a][b] = dq.append((a,b))if dis[sx][sy] == inf:return -1def get(x,y):if g[x][y] != '.':return 0 r = 0if g[x][n-y-1] != '#':r = max(r,dis[x][n-y-1])if g[m-x-1][y] != '#':r = max(r,dis[m-x-1][y])return rans = 0 top = 0p = [[inf]*n for _  in range(m)]for i in range(m):for j in range(n):if dis[i][j] < inf:p[i][j] = get(i,j)if p[i][j] < inf:top = max(top,p[i][j])q = [(0,sx,sy)]vis = [[False]*n for _ in range(m)]vis[sx][sy] = Truewhile q:d,x,y = heappop(q)ans = max(ans,d)for dx,dy in DIRS:a,b = x + dx, y + dyif a==tx and b ==ty:return ansif not inside(a,b) or g[a][b] == '#' or vis[a][b] or p[a][b] == inf:continuevis[a][b] = Trueheappush(q,(p[a][b],a,b))return -1#         # 二分做法
#         vis = [[-10]*n for _ in range(m)]
#         # 是否存在路径,路径上的权值都<=x
#         def ok(z):
#             vis[sx][sy] = z
#             def dfs(x,y):         
#                 if x==tx and y == ty:
#                     return True
#                 for dx,dy in DIRS:
#                     a,b = x+dx,y+dy                    
#                     if not inside(a,b) or g[a][b] == '#':
#                         continue
#                     if p[a][b] > z:
#                         continue
#                     if a==tx and b == ty:
#                         return True
#                     if  vis[a][b] != z:
#                         vis[a][b] = z                                                                     
#                         if dfs(a,b):
#                             return True
#                 # print(x,y)
#                 return False#             return dfs(sx,sy)
#         # print(p)
#         # print(ok(7))
#         ans = bisect_left(range(top+1),True,key=ok)
#         # print(top,ans)                      #         if ans == top+1:
#             return -1                
#         return ans          

六、 5. 魔法棋盘(以后补)

链接: 5. 魔法棋盘

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 直接暴力状压,但是TLE了。想想也是,全问号的情况下,每个位置枚举空和R就2^30次方了。
  • 等听完课再补。

3. 代码实现

class Solution:def getSchemeCount(self, n: int, m: int, g: List[str]) -> int:        stat = []for i in range(n):for j in range(m):stat.append(g[i][j])@cache def dfs(i,stat):if i == n*m:return 1if stat[i] != '?':return dfs(i+1,stat)            def check(a):  # check一个一个方向上的一条是否合法z = []for c in a:if c in 'RB?':z.append(c)if len(z) <= 2:return True# if len(set(z)) == 1:#     return True for i in range(2,len(z)):x,y = z[i],z[i-2]if x != y and x != '?' and y !='?' and z[i-1] !='?':                                          return Falsereturn Truedef ok(x,y):  # check这个点所在的行列是否合法a =[]for i in range(n):if p[i][y] in 'RB?':a.append(p[i][y])if len(a)>=3 and a[-1]!='?' and a[-2]!='?' and a[-3]!='?' and a[-1]!=a[-3]:return False                            a = []for j in range(m):if p[x][j] in 'RB?':a.append(p[x][j])if len(a)>=3 and a[-1]!='?' and a[-2]!='?' and a[-3]!='?' and a[-1]!=a[-3]:return Falsereturn Truep = [['']*m for _ in range(n)]   # 还原出棋盘s = list(stat)for x in range(n):for y in range(m):p[x][y] = s[x*m + y]ans = 0 x,y = divmod(i,m)for c in 'RB.':p[x][y] = cif  ok(x,y) :s[i] = cans += dfs(i+1,tuple(s))                                                      return ans return dfs(0,tuple(stat))                               

七、参考链接

相关文章:

[LeetCode复盘] LCCUP‘23春季赛 20230422

[LeetCode复盘] LCCUP23春季赛 20230422 一、总结二、 1. 补给马车1. 题目描述2. 思路分析3. 代码实现 三、2. 探险营地1. 题目描述2. 思路分析3. 代码实现 四、 3. 最强祝福力场1. 题目描述2. 思路分析3. 代码实现 五、 4. 传送卷轴1. 题目描述2. 思路分析3. 代码实现 六、 5…...

传统燃油车的智控App远控响应速度优化方向几点思考

一、分析当前问题及其影响因素 网络延迟&#xff1a;燃油车的App远控响应速度受到网络延迟的影响。网络延迟可能是由于网络拥堵或服务器响应速度慢等原因导致的。 用户设备&#xff1a;用户设备的性能也会影响燃油车的App远控响应速度。例如&#xff0c;设备的内存不足或存在故…...

回炉重造九---DNS服务器

1、DNS服务器的相关概念和技术 1.1 DNS服务器的类型 主DNS服务器从DNS服务器缓存DNS服务器&#xff08;forward DNS服务器{转发器}&#xff09; 1.1.1 主DNS服务器的作用 管理和维护所负责解析的域内解析库的服务器1.1.2 从DNS服务器的作用 从主服务器或从服务器“复制”解…...

UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)

目录 可能出现问题&#xff08;在六部分的测试可能无法连接的问题【在末尾加上了&#xff0c;怕有人没看见在这里写一下】&#xff09; 自定义委托 调整位置 创建更多的委托和回调函数给菜单&#xff1a; 多播和动态多播 代码&#xff1a; 委托变量 代码&#xff1a; 回…...

【数据库多表操作】sql语句基础及进阶

常用数据库&#xff1a; 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库&#xff0c;它是长期存储在计算机内、有组织、有结构的数据集合。数据库是信息系统的核心部分&#xff0c;现代软件系统中大量采用了数据库管理系统&#xff08;DBM…...

DPDK和RDMA的区别

网络的发展好像在各方面都是滞后于计算和存储&#xff0c;时延方面也不例外&#xff0c;网络传输时延高&#xff0c;逐渐成为了数据中心高性能的瓶颈。因为传统两个节点间传输数据的网络路径上有大量的内存拷贝&#xff0c;导致网络传输效率低下&#xff0c;网络数据包的收发处…...

体验 Google Bard

环境 windows 10 64bitGoogle Bardpython 3.8 简介 本篇介绍一个开源的 Google 聊天机器人Bard 的 API 逆向工程&#xff0c;使用它&#xff0c;可以免费的使用 Bard 服务&#xff0c;项目地址&#xff1a;https://github.com/acheong08/Bard 安装及使用 通过 pip 来安装 pip &…...

MITA触摸屏维修WP4053米塔工控机控制屏维修

MITA-TEKNIK米塔触摸屏维修工控机工控屏控制器维修DISPLAY 2COM全系列型号 Mita-Teknik触摸屏维修常见故障&#xff1a;上电无显示&#xff0c;运行报故障&#xff0c;无法与电脑通讯&#xff0c;触摸无反应&#xff0c;触控板破裂&#xff0c;触摸玻璃&#xff0c;上电黑屏&a…...

Nacos简介 安装 配置

简介 什么是注册中心 注册中心在微服务项目中扮演着非常重要的角色&#xff0c;是微服务架构中的纽带&#xff0c;类似于通讯录&#xff0c;它记录了服务和服务地址的映射关系。在分布式架构中&#xff0c;服务会注册到这里&#xff0c;当服务需要调用其它服务时&#xff0c;…...

五、MyBatis各种查询功能

MyBatis的各种查询功能 如果查询出的数据只有一条&#xff0c;可以通过 实体类对象接收List集合接收Map集合接收 如果查询出的数据有多条&#xff0c;一定不能用实体对象接收&#xff0c;会抛TooManyResultsException&#xff0c;可以通过 实体类类型的List集合接收Map类型…...

uni-app——picker组件的用法、时间、日期、地区选择器等

1、uniapp–picker组件 <template><view class"signUp"><view class"signUp_dv1"><u-form :model"form" ref"uForm" label-width"95px"><u-form-item label"日期" :required"tr…...

什么情况需要考虑 mysql 分表

最近看到公司的其中一个数据库用户表每个月都要几百万的新用户数据增加&#xff0c;目前单表已经是两千多万了。所以找了 DBA 讨论&#xff0c;发现以前学的知识&#xff0c;以及网上的一些资料其实说的并不是很正确&#xff0c;比如 mysql 单表不建议超过一千万&#xff0c;我…...

系统架构师02-架构设计 20分

1.架构基本概念 *质量属性效用树&#xff1a;是对系统质量属性进行识别和优先级排序的重要工具 。 包括&#xff1a; 性能&#xff1a;效率指标&#xff0c;处理任务所需时间或单位时间内的处理量。 可用性&#xff1a; 可靠性&#xff1a; 容错&#xff1a;出现错误后人能保…...

【python视图3】networkx图操作示例

一、说明 根据定义&#xff0c;图是节点&#xff08;顶点&#xff09;以及已识别的节点对&#xff08;称为边、链接等&#xff09;的集合。在 NetworkX 中&#xff0c;节点可以是任何可哈希对象&#xff0c;例如文本字符串、图像、XML 对象、另一个图形、自定义节点对象等。 如…...

网络地址转换应用

如图所示,企业使用一台AR 路由器作为出口设备,路由器配置NAT Outbound为私网用户提供访问Internet服务,同时配置NAT Server将私网WEB服务器发布到公网上,对外网用户提供服务。运营商仅为该单位分配了一个公网IP,此地址既作为AR出接口的IP地址,也作为NAT Outbound和NAT Se…...

强化学习-Double DQN、竞争网络结构和Rainbow(第4章)

来源书籍&#xff1a; TENSORFLOW REINFORCEMENT LEARNING QUICK START GUIDE 《TensorFlow强化学习快速入门指南-使用Python动手搭建自学习的智能体》 著者&#xff1a;[美]考希克巴拉克里希南&#xff08;Kaushik Balakrishnan&#xff09; 译者&#xff1a;赵卫东 出版…...

Unity 性能优化锦集

Unity作为一款主流的游戏开发引擎&#xff0c;不仅提供了强大的编辑器和开发工具&#xff0c;还可以让开发者轻松地实现高质量的3D游戏。但是&#xff0c;随着游戏规模的不断扩大和玩家需求的增加&#xff0c;游戏的性能问题也变得越来越重要。因此&#xff0c;在使用Unity进行…...

JS之Map的基本使用

一、Map的基本API 创建&#xff1a; const map new Map()插入&#xff1a;map.set("name", "郑建")读取&#xff1a;map.get("name")判断&#xff1a;map.has("name")删除&#xff1a;map.delete大小&#xff1a;map.size遍历&#…...

音视频八股文(6)-- ffmpeg大体介绍和内存模型

播放器框架 常用音视频术语 • 容器&#xff0f;文件&#xff08;Conainer/File&#xff09;&#xff1a;即特定格式的多媒体文件&#xff0c; 比如mp4、flv、mkv等。 • 媒体流&#xff08;Stream&#xff09;&#xff1a;表示时间轴上的一段连续数据&#xff0c;如一 段声音…...

4.25~~~~~

接着之前PE文件结构的预习 DOS 定位到NT 怎么操作的&#xff1f; 用的是e_lfanew&#xff0c;然后是相对于文件头的偏移量&#xff08;也就是raw表示方法&#xff09; 现在有个问题&#xff0c;为什么e_lfanew 这个变量不直接存储PE头 的绝对地址呢&#xff1f; 比如说&…...

论文AI率高不等于抄袭2026年高校政策盘点

论文AI率高&#xff0c;会不会被认定为学术不端&#xff1f;会不会影响毕业&#xff1f;和传统的"查重超标"性质一样吗&#xff1f; 这些问题在2026年毕业季被问得很多。这篇文章梳理清楚。 AI率高和抄袭&#xff1a;两件不同的事 先把概念说清楚&#xff1a; 传…...

Hermes社区贡献指南:如何参与项目开发和提交PR

Hermes社区贡献指南&#xff1a;如何参与项目开发和提交PR 【免费下载链接】hermes Golang package that generates clean, responsive HTML e-mails for sending transactional mail 项目地址: https://gitcode.com/gh_mirrors/he/hermes 想要为Hermes电子邮件生成库贡…...

Eigen库实战指南——从基础到精通

1. Eigen库基础入门&#xff1a;矩阵与向量操作 第一次接触Eigen库是在做机器人运动学仿真时&#xff0c;当时被它简洁的API设计惊艳到了。这个纯头文件的C模板库&#xff0c;不需要编译安装&#xff0c;只需包含头文件就能使用&#xff0c;对开发者极其友好。Eigen最核心的Mat…...

G-Helper:重塑华硕硬件控制体验的轻量级开源解决方案

G-Helper&#xff1a;重塑华硕硬件控制体验的轻量级开源解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...

OpenClaw+千问3.5-9B学习助手:自动整理课程笔记与生成测验

OpenClaw千问3.5-9B学习助手&#xff1a;自动整理课程笔记与生成测验 1. 为什么需要AI学习助手&#xff1f; 去年备考PMP认证时&#xff0c;我每天需要处理3-4小时的视频课程。最痛苦的环节不是听课&#xff0c;而是课后整理&#xff1a;暂停视频记录重点、梳理知识框架、制作…...

大模型机器人,相对普通机器人有哪些优势?

传统电销与客服正面临效率低、成本高、体验差的三重困境。目前市面上出现了大模型机器人&#xff0c;相对普通机器人可以更深度跟客户沟通首先&#xff0c;什么是大模型机器人外呼&#xff1f;大模型 AI 机器人外呼凭借深度理解、拟人交互、智能决策的核心能力&#xff0c;正成…...

Autoware.ai官方Demo深度解析:除了跑通,我们还能从Moriyama数据包中学到什么?

Autoware.ai官方Demo深度解析&#xff1a;从Moriyama数据包窥探自动驾驶核心技术 在自动驾驶技术的学习过程中&#xff0c;运行官方Demo往往是开发者接触新框架的第一步。然而&#xff0c;大多数人在成功跑通Autoware的Moriyama演示后便止步于此&#xff0c;错失了深入理解自动…...

别再让广播闪退!Android 14广播安全新规RECEIVER_EXPORTED的保姆级避坑指南

Android 14广播安全新规&#xff1a;RECEIVER_EXPORTED的深度解析与实战指南 去年秋天&#xff0c;当Google正式发布Android 14时&#xff0c;许多开发者发现原本运行良好的广播注册代码突然开始抛出SecurityException。这个看似简单的API变更背后&#xff0c;其实是Android团队…...

BMC监控实战:用Python+IPMI打造服务器硬件健康巡检系统

BMC监控实战&#xff1a;用PythonIPMI打造服务器硬件健康巡检系统 当服务器机房的报警铃声在深夜响起&#xff0c;运维团队最需要的是快速定位问题根源——是CPU过热触发了保护机制&#xff1f;还是某个风扇模块突然停转&#xff1f;传统的人工巡检方式在现代化数据中心早已力不…...

新手挖洞实录:我是如何通过一个Vue站点的逻辑缺陷拿到Shell的

从零到一的渗透实战&#xff1a;一位安全新手的Vue站点突破之旅 第一次成功getshell的感觉&#xff0c;就像在黑暗中摸索许久后突然找到开关——那种豁然开朗的兴奋感至今难忘。作为刚踏入安全领域的新人&#xff0c;我决定记录下这段从资产发现到最终突破的完整历程&#xff…...