首页 > 其他分享 >牛客每日一题系列-001

牛客每日一题系列-001

时间:2024-07-29 22:06:52浏览次数:6  
标签:系列 vis List pos queue 牛客 001 range

牛客 23486 小A与小B

方法1:BFS

from collections import deque
from typing import List

def bfs(pos: tuple, direction: int) -> List[List[int]]:
    ans = [[MAX] * M for _ in range(N)]
    vis = [[False] * M for _ in range(N)]
    queue = deque(); queue.append((pos, 0)); vis[pos[0]][pos[1]] = True
    while queue:
        (x, y), time = queue.popleft(); ans[x][y] = time
        for i in range(direction):
            dx, dy = x + directions[i][0], y + directions[i][1]
            if 0 <= dx < N and 0 <= dy < M and maze[dx][dy] != '#' and not vis[dx][dy]:
                queue.append(((dx, dy), time + 1)); vis[dx][dy] = True
    return ans

MAX = 10 ** 6
directions = [(-1, 0), (1, 0), (0, -1), (0, 1), (-1, -1), (-1, 1), (1, -1), (1, 1)]
N, M = map(int, input().split())
maze = [list(input().split()) for _ in range(N)]
posA, posB = (0, 0), (0, 0)
for i in range(N):
    for j in range(M):
        if maze[i][j] == 'C':
            posA = (i, j)
        elif maze[i][j] == 'D':
            posB = (i, j)

ans1, ans2, res = bfs(posA, 8), bfs(posB, 4), MAX
for i in range(N):
    for j in range(M):
        res = min(res, max(ans1[i][j], (ans2[i][j] + 1) // 2))
print("NO" if res == MAX else "YES\n" + str(res))

标签:系列,vis,List,pos,queue,牛客,001,range
From: https://www.cnblogs.com/XuGui/p/18331175

相关文章

  • 【攻防技术系列+代理转发】ptunnel 工具
    虚拟机环境搭建:【Kali】,192.168.10.131(NAT公网网卡)【Ubuntu】(跳板机),192.168.10.130(NAT公网网卡);172.16.80.136(内网网卡)【WindowsXP】,172.16.80.128(内网网卡);172.16.8.131(内网网卡)工具ptunnel前提条件kali和ubuntu系列,centos和红帽系列运行不了ptunnel脚本为了更贴......
  • 推出LP5810系列具有 I2C 和自动动画控制功能的 4 通道 RGBW LED 驱动器,适用于便携式和
    说明LP5810是一款具有自主动画引擎控制功能的4通道RGBWLED驱动器。该器件在点亮LED时具有0.4mA(典型值)的超低正常工作电流。该器件采用模拟调光和PWM调光两种方法实现强大的调光性能。每个LED的输出电流可在0.1mA至25.5mA或0.2mA至51mA之间以256个阶跃进......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇
    1.简介前边的三篇文章基本上对文件上传的知识介绍和讲解的差不多了,今天主要是来分享宏哥在文件上传的实际操作中发现的一个问题:input控件和非input控件的上传API对其都可以上传成功。废话不多说直接进入正题。2.项目实战宏哥之前在讲解和分享Java+selenium系列时,将其划分为非in......
  • 网页开发入门系列 1:开发工具准备
    网页开发入门系列1:开发工具准备文本编辑器我们需要一个文本编辑器来编辑源代码,需要注意的是编辑对象是纯文本,可以理解为txt文本文件,像MicrosoftWord这样的高级字处理软件不适合编辑代码。Vim、GNUEmacs、Windows记事本等软件都是符合要求的文本编辑器。不过前两者学习难......
  • Jenkins结合SVN报错E230001: Server SSL certificate verification failed的解决方法
    报错如下:svn:E230001:Commitfailed(detailsfollow):svn:E230001:UnabletoconnecttoarepositoryatURL'https://192.168.0.99/svn/xxx/dat'svn:E230001:ServerSSLcertificateverificationfailed:certificateissuedforadifferenthostname,is......
  • 【资料分享】基于TI Sitara系列AM3352/AM3354/AM3359核心板规格书
    1核心板简介创龙科技SOM-TL335x-S是一款基于TISitara系列AM3352/AM3354/AM3359ARMCortex-A8高性能低功耗处理器设计的低成本工业级核心板,通过邮票孔连接方式引出千兆网口、LCD、GPMC等接口。核心板经过专业的PCBLayout和高低温测试验证,稳定可靠,可满足各种工业应用环境。......
  • 大语言模型系列:Transformer(上)
    大语言模型系列:Transformer一、引言在自然语言处理(NLP)领域,随着数据量的爆炸性增长和计算能力的提升,深度学习模型的应用日益广泛。其中,Transformer模型作为大语言模型系列中的杰出代表,自2017年由谷歌提出以来,便以其独特的自注意力机制和高效的并行计算能力,迅速成为NLP领域的核......
  • 大语言模型系列:Transformer(下)
    五、Transformer模型应用Transformer模型自提出以来,凭借其强大的表示能力和高效的并行计算能力,在自然语言处理领域取得了广泛的应用。以下列举了一些Transformer模型的主要应用场景:机器翻译:Transformer模型最初就是为了解决机器翻译问题而设计的。它通过编码器将源语言文本......
  • 基于 TI Sitara系列 AM64x核心板——程序自启动说明
    前言本文主要介绍AM64x的Cortex-A53、Cortex-M4F和Cortex-R5F核心程序自启动使用说明。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。本说明文档适用开发环境如下:Windows开发环境:Windows764bit、Windows1064bit虚拟机:VMware15.5.5Linux开发环境:Ubuntu18.04.4......
  • ARFoundation系列讲解 - 93 Immersal GoPro绘制地图
    一、Immerasal地图绘制的方式1.MapperAPP地图绘制:这种⽅式不需要数据处理操作,更适合⼩场景、测试使⽤。只能生成点云模型,无法生成真实环境网格模型。2. 全景相机地图绘制:使⽤全景相机采集原始数据建图的优势在于:全景图⽚视野覆盖范围⼤,可以⽤更少的照⽚完成较⼤场景地图(......