蓝桥杯第十天打卡

本文探讨了扫地机器人中的算法优化,如二分查找法,以及其在日常生活中的应用。同时,对比了深度优先搜索(BFS)和广度优先搜索(BFS)在解决气候变化问题——寻找无高地岛屿数量上的差异,展示了信息技术在环保领域的独特贡献。
摘要由CSDN通过智能技术生成
扫地机器人

 

N,K=map(int,input().split())

 

line=[]

for i in range(K):

    line.append(int(input()))

#排序之后便于检查

line.sort()

#检查每一个清理距离是否能将走廊清理干净

def check(dis):

    pos=1#初始位置,从1开始

    for i in range(len(line)):

        if pos+dis>=line[i]:

            if i!=len(line)-1:

                pos=min(pos+dis+1,N,line[i+1])#判断下一个位置

            else:

                pos=min(pos+dis,N)

        else:

            return False

    if pos>=N:

        return True

    return False

#进行二分查找,上届为N,下届为1

left,right=1,N

while left<right:

    mid=(left+right)>>1#比mid=(left+right)/2快

    if check(mid):right=mid

    else:left=mid+1

#最后输出2倍

 

print(2*left)

全球变暖
#用 DFS 或 BFS 搜出有多少个岛(连通块),检查这个岛有没有高地,统计那些没有高地
#的岛(连通块)的数量,就是答案。
n=int(input())
a=[]
for i in range(n):
    a.append(input())
dir=[(0,1),(0,-1),(1,0),(-1,0)]#记录左右下上四个方向
vis=[[0]*n for i in range(n)]#记录是否访问过的数组
flag=True
q=[]#用列表来实现队列
def bfs(x,y):
    global flag
    q.append((x,y))#初始位置
    vis[x][y]=1
    while len(q):
        item=q.pop(0)#将队列中第一个元素出队
        tx=item[0]
        ty=item[1]
        if a[tx][ty+1]=='#' and a[tx][ty-1]=='#'and a[tx+1][ty]=='#'and a[tx-1][ty]=='#':
            flag=False#这是一个高地,不会被淹没
        for i in range(4):
            nx=tx+dir[i][0]#更换位置
            ny=tx+dir[i][1]
            if vis[nx][ny]==0 and a[nx][ny]=='#':
                vis[nx][ny]=1
                q.append((nx,ny))
ans=0
for i in range(n):
    for j in range(n):
        if a[i][j]=='#' and vis[i][j]==0:
            flag=True#假设这个岛淹没
            bfs(i,j)#找这个岛中有没有高地,如果有flag为True
            if flag:
                ans+=1
print(ans)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值