【题目描述】小S新买了一个掌上游戏机这个游戏机由两节5号电池供电。为了保证能够长时间玩游戏他买了很多5号电池这些电池的生产商不同质量也有差异因而使用寿命也有所不同有的能使用5个小时有的可能就只能使用3个小时。显然如果他只有两个电池一个能用5小时一个能用3小时那么他只能玩3个小时的游戏有一个电池剩下的电量无法使用但是如果他有更多的电池就可以更加充分地利用它们比如他有三个电池分别能用3、3、5小时他可
【解题思路】 对于每组数据,首先将电池使用时间从小到大排序。然后,计算出每个电池的剩余使用时间,即当前电池的使用时间减去前面所有电池的使用时间之和。最后,选择剩余使用时间最长的两个电池使用,即排序后的最后两个电池。
【代码实现】
import sys
def max_game_time(N, battery_time):
battery_time.sort() # 将电池使用时间排序
remain_time = [0] * N # 记录每个电池的剩余使用时间
for i in range(N):
if i == 0:
remain_time[i] = battery_time[i]
else:
remain_time[i] = battery_time[i] - sum(battery_time[:i]) # 计算剩余使用时间
remain_time.sort() # 将剩余使用时间排序
max_time = remain_time[-1] + remain_time[-2] # 选择剩余使用时间最长的两个电池使用
return max_time
if __name__ == "__main__":
for line in sys.stdin:
N = int(line.strip())
battery_time = list(map(int, sys.stdin.readline().strip().split()))
max_time = max_game_time(N, battery_time)
print("{:.1f}".format(max_time))
``
原文地址: https://www.cveoy.top/t/topic/iIJy 著作权归作者所有。请勿转载和采集!