工作安排
题目描述:
小明每周上班都会拿到自己的工作清单,工作清单内包含n项工作,每项工作都有对应的耗时时长(单位h)和报酬,工作的总报酬为所有已完成工作的报酬之和。那么请你帮小明安排一下工作,保证小明在指定的工作时间内工作收入最大化。
输入描述:
输入的第一行为两个正整数T,n。T代表工作时长(单位h,0 < T < 100000),n代表工作数量(1 < n ≤ 3000)。
接下来是n行,每行包含两个整数t,w。t代表该项工作消耗的时长(单位h,t > 0),w代表该项工作的报酬。输出描述:
输出小明指定工作时长内工作可获得的最大报酬。
示例1
输入:
40 3
20 10
20 20
20 5
输出:
30
T = 65
n = 3
times = [20, 20, 20, 1, 2, 0, 20]
valves = [10, 20, 5, 3, 3, 1, 31]
def resolve(t: int, tm: list, vlv: list):
dp = [0] * (t + 1)
for i in range(0, len(tm)):
for j in range(t, tm[i] - 1, -1):
dp[j] = max(dp[j], dp[j - tm[i]] + vlv[i])
return dp[t]
print(resolve(T, times, valves))