第一行输入一个整数
——事件数量。
第二行输入两个整数
——可用时间与可用精力上限。
接下来
行,第
行输入三个整数
,描述第
个事件的参数。
输出一个整数,代表在限制条件内能获得的最大快乐值。
3 5 4 1 2 2 2 1 3 4 1 5
7
选择事件与事件
:耗时
,耗费精力
,快乐值
。
2 2 2 1 3 3 3 1 4
0
任何单个事件都超过精力或时间限制,小红只能选择不分享,快乐值为。
import sys data = sys.stdin.buffer.read().split() it = iter(data) n = int(next(it)) T = int(next(it)) H = int(next(it)) event = [[0, 0, 0]] for _ in range(n): t = int(next(it)) h = int(next(it)) a = int(next(it)) if t <= T and h <= H: event.append([t, h, a]) dp = [[[0 for _ in range(T + 1)] for _ in range(H + 1)] for _ in range(n + 1)] for i in range(1, n + 1): item = event[i] for j in range(H + 1): for k in range(T + 1): if k >= item[0] and j >= item[1]: dp[i][j][k] = max( dp[i - 1][j][k], dp[i - 1][j - item[1]][k - item[0]] + item[2] ) else: dp[i][j][k] = dp[i - 1][j][k] print(dp[-1][-1][-1])