第一行输入两个整数
代表关卡数量和获得跳关道具的条件。
第二行输入
个整数
代表通过每个关卡需要消耗的时间。
在一行上输出一个整数,表示小红通过这
个关卡所需的最少时间。
3 2 1 3 2
4
小红通过第二个关卡后获得跳关道具,此时消耗
单位时间;在第三个关卡使用跳关道具,不再消耗时间。
6 2 1 1 4 5 1 4
7
小红通过第二个关卡后获得第一个跳关道具;
在第四个关卡使用第一个跳关道具后得到第二个跳关道具;
在第六个关卡使用第二个跳关道具。
5 1 2 4 5 1 3
2
通过第一关后,后面的关卡都可以使用跳关道具。跳关也算一次成功的闯关。
import sys for line in sys.stdin: a = line.split() n, k = int(a[0]), int(a[1]) num = list(map(int, input().split())) jump = n // k # 有多少次跳的机会 chance = [1] * (jump + 1) # 为每个元素添加索引信息,形成 (index, value) 元组 num_with_index = [(i, v) for i, v in enumerate(num)] # 按照值从大到小排序 maxnum = sorted(num_with_index, key=lambda x: x[1], reverse=True) jian = 0 for i, x in maxnum: j = i // k # 看在第几次能 jump for p in range(j, 0, -1): if chance[p] == 1: chance[p] = 0 jump -= 1 jian += x break if jump == 0: break print(sum([x[1] for x in maxnum]) - jian)有点超时了,15/20个用例通过,比一楼的答案通过更多