本文共 1562 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要安排Bessie的工作时间,使得她能够在有限的N小时内最大化产奶量。每次完成一个任务后,Bessie需要休息R小时。我们需要选择这些任务的顺序,以便在总产奶量上取得最大收益。
问题分析:
预处理:
动态规划:
状态转移:
def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]) idx += 1 M = int(data[idx]) idx += 1 R = int(data[idx]) idx += 1 a = [] for _ in range(M): l = int(data[idx]) idx += 1 r = int(data[idx]) idx += 1 c = int(data[idx]) idx += 1 a.append((l, r, c)) for i in range(M): a[i] = (a[i][0], a[i][1] + R, a[i][2]) a.sort(key=lambda x: x[1]) f = [0] * (N + R + 2) for i in range(1, N + R + 2): f[i] = f[i - 1] while idx < M and a[idx][1] < i: idx += 1 while idx < M and a[idx][1] == i: l, r, c = a[idx] if l <= i - 1: if f[l] + c > f[i]: f[i] = f[l] + c idx += 1 print(f[N])if __name__ == "__main__": main()
读取输入:
预处理任务:
动态规划数组初始化:
计算最大产奶量:
通过这种方法,我们可以高效地找到在给定N小时内的最大产奶量。
转载地址:http://mptn.baihongyu.com/