defcalcuMaxNode(n, t):# 第i层和第i-1层的水流支路有2i-2条,每条能分到1/(2i-2)个水流量,中间的结点每秒会得到1/(i-1)个水流量,因此需要i-1s才能满载# 外面的两个则需要2i-2s才能满载# 每一层满载需要消耗的时间为ismaxT =sum([i+1for i inrange(n)])if t >= maxT:return maxT# 先确定目前流到了哪一层time =[1for _ inrange(11)]for i inrange(2,11):time[i]= time[i-1]+ iprint(time)layers =1for layer inrange(1,n+1):if time[layer]> t:layers = layer # 流到了第layer层,且还没有流满breakinside_time = layers/(layers -1)# 里面水结点流满需要的时间outside_time =2*layers/(layers -1)# 外面2个水结点流流满的时间if time[layers-1]+ inside_time*(layers-2)> t:returnsum([i for i inrange(1,layers)])elif time[layers-1]+ inside_time*(layers-2)<= t and time[layers]+ outside_time*2> t:returnsum([i for i inrange(1,layers+1)])-2else:returnsum([i for i inrange(1,layers+1)])n, t =list(map(int,input().split()))print(calcuMaxNode(n,t))'''
3 5
'''
第五题:轰炸——DFS或者BFS(将1包围的0改为2)
defhongzha(matrix):m =len(matrix)n =len(matrix[0])# 先将没有被1包围的0给去掉,没有被1包围也就是可以通到矩阵的四边# 判断是否需要继续遍历defjudge(indexi,indexj,hashtable,matrix):if indexi <0or indexj <0or indexi >= m or indexj >= n:returnFalseif hashtable[indexi][indexj]==True:returnFalseif matrix[indexi][indexj]==1:returnFalsereturnTrue# 广度优先搜索defbfs(indexi,indexj,hashtable,res):''':param indexi::param indexj::param hashtable::param P: 存放着四边上的0元素坐标,后面会将不被包围的坐标也添加上去:return:'''P=[(indexi,indexj)]hashtable[indexi][indexj]=TrueI =[0,-1,1,0]J =[-1,0,0,1]while P:indexi,indexj = P[0]res.append(P[0])for i inrange(4):if judge(indexi+I[i],indexj+J[i],hashtable,matrix):P.append((indexi+I[i],indexj+J[i]))hashtable[indexi+I[i]][indexj+J[i]]=TrueP = P[1:]hashtable =[[Falsefor _ inrange(n)]for _ inrange(m)]res =[]for i inrange(m):if judge(i,0,hashtable,matrix):bfs(i,0,hashtable,res)if judge(i,n-1,hashtable,matrix):bfs(i, n-1, hashtable, res)for j inrange(n):if judge(0,j,hashtable,matrix):bfs(0,j,hashtable,res)if judge(m-1,j,hashtable,matrix):bfs(m-1,j, hashtable, res)for i inrange(m):for j inrange(n):if matrix[i][j]==0and(i,j)notin res:matrix[i][j]=2return matriximport random
m = random.randint(5,11)
n = random.randint(5,11)
matrix =[]for i inrange(m):line =[]for j inrange(n):line.append(random.randint(0,1))matrix.append(line)newMatrix = hongzha(matrix)for line in newMatrix:print(line)