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

【蓝桥杯】12111暖气冰场(多源BFS 或者 二分)

在这里插入图片描述

思路

这题可以用BFS做,也可以用二分来做。
用二分这里只提供一个思路:对时间来二分查找,check函数就是检查在特定的时间 t 0 t_0 t0内每一个暖气炉的传播距离能否覆盖所有格子。
用BFS做:
由几个点开始向外扩散,知道铺满整个面。可以用BFS来做,原本的BFS是从一个点开始加入deque,多源BFS那现在就先把所有的暖气炉加入deque,再遍历就行了。
还有一个注意点,题目的输出是花了多少时间,也就是扩散的轮数,我们可以用距离来度量时间,一秒钟一格,所以我们时刻更新所出现的距离暖气炉最远的距离即可。我们把vis标记数组替换为dis数组 兼具判断是否遍历和记录距离的作用。

code

import os
import sys
from collections import deque

n,m,t = map(int,input().split())
q = deque()
dis = [[-1 for i in range(m+1)] for j in range(n+1)]
for i in range(t):
  x,y = map(int,input().split())
  q.append([x,y])
  dis[x][y] = 0

ans = 0
while len(q)!=0:
  x,y = q.popleft()
  for dx,dy in [(-1,0),(+1,0),(0,-1),(0,+1),(-1,-1),(-1,+1),(+1,-1),(+1,+1)]:
    nx,ny = x+dx,y+dy
    if 1<=nx<=n and 1<=ny<=m:
      if dis[nx][ny]==-1:
        q.append([nx,ny])
        dis[nx][ny] = dis[x][y] + 1
        ans = max(ans,dis[nx][ny])

print(ans)

相关文章:

  • ‘闭包‘, ‘装饰器‘及其应用场景
  • 西门子200smart之modbus_TCP(做从站与第三方设备)通讯
  • 从头开始学C语言第二十九天——指针数组
  • JavaScript-日期对象与节点操作详解
  • Apache Flink技术原理深入解析:任务执行流程全景图
  • Rocky9.2 编译安装Intel WIFI系列无线网卡驱动
  • 华为终端将全面进入鸿蒙时代
  • LLM - CentOS上离线部署Ollama+Qwen2.5-coder模型完全指南
  • Mimalloc论文解析:小内存管理的极致追求与实践启示
  • 虚拟机访问主机的plc仿真
  • C++学习之网盘项目单例模式
  • Swift 经典链表面试题:如何在不访问头节点的情况下删除指定节点?
  • FPGA 以太网通信(四)网络视频传输系统
  • c#难点整理2
  • windows下利用Ollama + AnythingLLM + DeepSeek 本地部署私有智能问答知识库
  • CVPR 2025 | 文本和图像引导的高保真3D数字人高效生成GaussianIP
  • 美国国家数据浮标中心(NDBC)
  • Leetcode刷题笔记1 图论part03
  • LangChain Chat Model学习笔记
  • 【Docker系列一】Docker 简介
  • 娃哈哈:自4月起已终止与今麦郎的委托代工关系,未来将坚持自有生产模式
  • 违法违规收集使用个人信息,爱奇艺、轻颜等65款App被点名
  • 美国明尼苏达州发生山火,过火面积超80平方公里
  • 三亚通报救护车省外拉警报器开道旅游:违规违法,责令公司停业整顿
  • 山西省委常委李金科添新职
  • 哈佛新论文揭示 Transformer 模型与人脑“同步纠结”全过程!AI也会犹豫、反悔?