[python队列广搜]请佩戴好口罩

请佩戴好口罩

题目描述

疫情当下,希望同学们都认真佩戴口罩,保护自己,保护他人。
现假设有一个n*n的网格,每个人分别站在网格中的一个方格上,人们可以选择佩戴/不佩戴口罩,口罩对于病毒的传播有如下影响,分为两种情况:
1. 某人已被感染,若未佩戴口罩,则病毒的“传染区域”是患者周围的四个方格;若正确佩戴口罩,则病毒无法传染其他人。
2. 某人健康,若未佩戴口罩,则只要他位于任意一个患者的“传染区域”内,就会被传染;若正确佩戴口罩,则只有他同时位于4个患者的“传染区域”内时,才会被传染。
我们将给出网格中每个人的口罩佩戴情况,以及网格中第一个患者的位置,请你计算d天后共有多少患者。

关于输入

第一行输入正整数n,表示网格的边长,1<=n<=100。
接下来输入网格,n行,每行n个整数,0表示未佩戴口罩,1表示佩戴口罩。
接下来一行是两个整数,表示第一个感染者在网格中的行、列坐标(规定网格左上角格子的坐标为(0, 0),右上角格子的坐标为(0, n-1),以此类推)。
接下来一行是一个正整数,表示天数d,1<=d<=100。

关于输出

输出为一行整数,表示经过d天后患者的人数。

例子输入
4
0 0 0 1
0 1 0 0
1 0 0 1
0 0 1 0
1 2
5
例子输出
11
解题分析

在python中直接用多层for循环是很慢的,Python是一种解释型语言,相对于编译语言,解释器需要更多的时间来解析和执行代码。此外,对于每一次循环迭代,Python需要进行更多的工作,例如变量查找、内存分配等。所以,本题如果直接定义一些数组存储信息,并用for循环去做的话,也不是不可以,只是在对于数据量比较大的情况下,会导致时间上开销极大。

下面介绍一种利用队列数据结构来优化的方法。我们可以引入队列(queue)数据结构,这个结构的特点是头出尾进,也就是它只能从尾巴进入队列,从队头离开队列。这是可以用数组去模拟的。只要我们在全局过程中维护好我们的一些下标变量和整个的数组结构即可。

我们还需要一个病人类记录发病的人的位置和发病的天数,以便我们去判断。

首先通过输入获取了网格的边长n以及网格中每个人的口罩佩戴情况,以及第一个患者的位置和天数d。然后使用了队列的数据结构,将第一个患者的位置和天数加入到队列中,并标记其口罩佩戴情况。接着,通过一个while循环,不断遍历队列中的元素,每次遍历时,都会将患者的传染区域内的健康人标记为2,同时将传染区域的健康人加入到队列中,并标记其天数。在遍历的过程中,通过不断pop()和push()操作,实现了对队列中元素的处理。最后,通过对网格中每个人的口罩佩戴情况进行遍历,计算出经过d天后患者的人数,并输出。

代码实现
count=1
n=int(input())
mask=[[0 for _ in range(n)] for _ in range(n)]
dx=[0,0,-1,1]
dy=[-1,1,0,0]
for i in range(n):mask[i]=list(map(int,input().split()))
x1,y1=map(int,input().split())
days=int(input())
d=1
count=1
q=[]
l=0
class sick:def __init__(self,x1,y1,d):self.x=x1self.y=y1self.day=d
q.append(sick(x1,y1,1))
if mask[x1][y1]==1:print(1)exit()
mask[x1][y1]=2
def pop():global ll+=1
def front():global lreturn q[l]
def push(x):q.append(x)
while l<len(q) and d<=days:p=front()while p.day==d:for i in range(4):nx=p.x+dx[i]ny=p.y+dy[i]if nx>=0 and nx<n and ny>=0 and ny<n and mask[nx][ny]==0:count+=1if d!=days:mask[nx][ny]=2else:mask[nx][ny]=3push(sick(nx,ny,d+1))pop()if l>=len(q):breakp=front()d+=1
for i in range(n):for j in range(n):if mask[i][j]==1:tmp=0for k in range(4):nx=i+dx[k]ny=j+dy[k]if nx>=0 and nx<n and ny>=0 and ny<n and mask[nx][ny]==2:tmp+=1if tmp==4:count+=1
print(count)

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

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

相关文章

被曝隐瞒添加剂、夸大产品功效,东方甄选再陷选品风波

号称专注为客户细心甄选好物的东方甄选&#xff08;&#xff08;HK:01797&#xff09;&#xff09;&#xff0c;又摊上事儿了。 近日&#xff0c;海关总署发布公告称&#xff0c;美国饮料生产企业JERRY&SONS PHARMACEUTICAL INC在申请注册时提供了虚假材料&#xff0c;且未…

moviepy用法大全

1.引用 from moviepy.editor import * 2. 载入 2.1 载入视频 video = VideoFileClip(filePath) 2.2 载入音频 audio=AudioFileClip(filePath) 2.3 载入图片 img = (ImageClip(videopath+videofengpi) # 水印持续时间 .set_duration(start_video_clip_begin.duration) …

C2_W2_Assignment_吴恩达_中英_Pytorch

Neural Networks for Handwritten Digit Recognition, Multiclass In this exercise, you will use a neural network to recognize the hand-written digits 0-9. 在本次练习中&#xff0c;您将使用神经网络来识别0-9的手写数字。 Outline 1 - Packages 2 - ReLU Activatio…

c语言经典测试题9

1.题1 #include <stdio.h> int main() { int i 1; sizeof(i); printf("%d\n", i); return 0; } 上述代码运行结果是什么呢&#xff1f; 我们来分析一下&#xff1a;其实这题的难点就是sizeof操作后i的结果是否会改变&#xff0c;首先我们创建了一个整型i&a…

LeetCode刷题小记 六、【栈与队列】

1.栈与队列 文章目录 1.栈与队列写在前面1.1栈与队列理论基础1.2用栈实现队列1.3用队列实现栈1.4有效的括号1.5删除字符串中的所有相邻重复项1.6逆波兰表达式求值1.7滑动窗口最大值1.8前K个高频元素 Reference 写在前面 本系列笔记主要作为笔者刷题的题解&#xff0c;所用的语…

分布式基础 --- Leader election

分布式基础 --- Leader election 为什么需要leader electionRing electionBully Algorithm 为什么需要leader election 在一组集群中, 需要选出一个leader来承担一些特别的任务, 比如 协调和控制系统操作&#xff1a;领导者负责协调和控制整个分布式系统的操作。它可以接收和处…

one4all 排坑记录

one4all 排坑记录 任务踩坑回顾动作踩坑动作踩坑动作新一步测试Habitat-sim 测试habitat-lab继续ONE4ALL 任务 看了《One-4-All: Neural Potential Fields for Embodied Navigation》这篇论文&#xff0c;感觉挺有意思&#xff0c;他也开源了代码。视觉语言导航是我一直想做的…

windows上elasticsearch的ik分词器的安装

下载 下载地址 在elasticsearch下的plugins文件夹下创建ik的文件夹 下载的ik压缩包解压到plugins/ik 重启elasticsearch 验证 http://ip:9200/_cat/plugins

python笔记_运算符优先级

运算符描述算术运算符&#xff08;x&#xff09;括号内优先级最高**乘方 * / // % 乘 矩阵乘 除 整除 取余 _ 加 减 位运算符 >> << 右移 左移 &按位与^按位异或|按位或比较运算符 in not in is is not < < > > ! 判断两个变量是否相同 判…

SpringBoot3-核心原理

1. 事件和监听器 1. 生命周期监听 场景&#xff1a;监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件&#xff1b; 编写SpringApplicationRunListener 实现类在 META-INF/spring.factories 中配置 org.springfram…

【蓝桥杯】错误票据

今天是2024年3月1号&#xff0c;蓝桥杯比赛还有一个月的时间&#xff0c;虽说自己不指望拿奖吧&#xff0c;但是还是有些莫i名的焦虑&#xff0c;这道题目都做不出来&#xff0c;感觉自己真的有点菜啊&#xff01;但是还好啦&#xff0c;我觉得是因为我没有题感&#xff0c;慢慢…

spring boot 整合 minio存储 【使用篇】

导入依赖 <!--minio--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.0.3</version></dependency> yml配置&#xff08;默认配置&#xff09; max-file-size: 200MB 设置文件最大…

华为od机试C卷-开源项目热度榜单

1、题目描述 某个开源社区希望将最近热度比较高的开源项目出一个榜单&#xff0c;推荐给社区里面的开发者。 对于每个开源项目&#xff0c;开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue…

微服务API网关---APISIX

最近在做微服务调研&#xff0c;看到了apisix这个网关&#xff0c;于是进行了初步了解一下。 微服务是指&#xff0c;将大型应用分解成多个独立的组件&#xff0c;其中每个组件都各自的负责对应项目。 系统的架构大致经历了&#xff1a;单体应用架构–> SOA架构 -->微服务…

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 附录D 关于TCP并发连接的几个思考题与试验

前几天作者在新浪微博上出了两道有关TCP的思考题&#xff0c;引发了一场讨论&#xff08;http://weibo.com/1701018393/eCuxDrtaONn&#xff09;。 第一道初级题目是&#xff1a;有一台机器&#xff0c;它有一个IP&#xff0c;上面运行了一个TCP服务程序&#xff0c;程序只侦听…

StarRocks实战——松果出行实时数仓实践

目录 一、背景 二、松果出行实时OLAP的演进 2.1 实时数仓1.0的架构 2.2 实时数仓2.0的架构 2.3 实时数仓3.0的架构 三、StarRocks 的引入 四、StarRocks在松果出行的应用 4.1 在订单业务中的应用 4.2 在车辆方向的应用 4.3 StarRocks “极速统一” 落地 4.4 StarRoc…

Lambda、Function、StreamAPI详解

目录 1、Lambda 2、Function 3、StreamAPI 中间操作&#xff1a;Intermediate Operations 终止操作&#xff1a;Terminal Operation 1、Lambda Java8语法糖&#xff1a;参数列表 箭头 方法体 package com.atguiggu.lambda;import java.util.*; import java.util.funct…

分布式ID生成系统之雪花算法详解

在当今的云计算和微服务架构盛行的时代&#xff0c;分布式系统已成为软件开发的重要组成部分。随着系统规模的扩大和业务的复杂化&#xff0c;对数据一致性和唯一性的要求也越来越高&#xff0c;尤其是在全局唯一标识符&#xff08;ID&#xff09;的生成上。因此&#xff0c;分…

代码随想录算法训练营Day48 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机 II

121.买卖股票的最佳时机 &#xff08;想写动态规划写着写着变成贪心了&#xff09; 半贪心半动规&#xff1a; int maxProfit(vector<int>& prices) {vector<int> dp(prices.size(), 0);int minVal prices[0];for (int i 1; i < prices.size(); i) {//…

yolov5训练太慢的解决方案

问题原因 训练太慢大多是因为没有安装CUDA和pytorch&#xff0c;导致的只有cpu在跑&#xff0c;显卡没跑 这就是很典型的。 解决方案 第一步&#xff1a;安装CUDA 在本机上面安装CUDA,记住只有N卡可以安装&#xff0c;一开始的电脑是自带CUDA的。 如果不是自带的CUDA&…