扫地机器人
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)