我是这样想的,条件要求至少两人乘船,最多三人乘船。我于是把它分为2种情况(m为当前测试数的长度): 1、当m=2 or m = 3时 :     可以一次性过河,因此最少时间为其测试数的最大值 2、m >= 4 时:     先将最小的两个数拿出来,然后剩余 res =  m - 2人,接着最小的两个人就依次将剩下的res个人送至河对岸。因为每次送一次这两个人都要回来,回来的时间应该取这两人的最大值。不过要注意的是:当送完最后一人,就不需要回来了。         所以最短时间应该为:            剩下人数(即res个)数值相加的总值  +  res * t  ( t为最小两个数的最大数) ###3不懂对不对,反正我没有写完 :| ),不过测试几组还行,请大佬们纠正 n = int(input()) content = [] for i in range(0,n):     m = int(input())     a = input().split( )          for j in range(0,m):         a[j] = int(a[j])              a.sort() #排序     if m == 2:         content.append(a[1])     elif m == 3:         content.append(a[2])     else:                  res = m-2         two = res -1         t = two*a[1]         ss = sum(a[2:])         t = t+ss         content.append(t)          for k in content:     print(k)             
点赞 3

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务