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

被折叠的 条评论
为什么被折叠?



