求问为什么我的E写的也是O(6nk),但是超时呀,毫无思路优化
from math import inf
n, k = list(map(int, input().split(" ")))
a = list(map(int, input().split(" ")))
dp = [[-inf] * (k + 1) for _ in range(n)]
# dp[i][j], 当前在i, 跳了j次的最大余额
for i in range(6):
dp[i][1] = a[i]
for i in range(n):
for j in range(k): # 仅到k - 1
if not dp[i][j] > -inf:
continue
for offset in range(1, 6 + 1):
if i + offset >= n:
break
dp[i + offset][j + 1] = max(dp[i + offset][j + 1], dp[i][j] + a[i + offset])
print(max([dp[i][k] for i in range(n)]))
查看13道真题和解析
