【发布时间】:2015-05-22 17:33:13
【问题描述】:
我试图解决这个问题,但即使过了几个小时我也无法解决 完全理解问题。我什至无法上来 使用任何蛮力技术。这就是问题:
有 N 个成员和 N 个问题,每个成员必须准确解决 1 个问题。团队中只允许一名成员阅读 在任何人开始解决之前的问题陈述。
请注意,并不是每个人一开始都阅读过这些问题。所以,要解决 成员需要知道某个队友的陈述的问题 已经认识他们了。知道问题一次后,会员才有资格 向其他队友解释(一次一位队友)。你可以 假设解释(1或N个问题)总是需要D 分钟。在解释过程中,两名涉事成员都不会 可以做任何其他事情。
问题具有不同的难度级别。你可以假设它 将花费 Ti 分钟来解决第 i 个问题,无论哪个 会员解决了。
给定一个团队的数据,他们最少可能需要多少时间 能解决所有问题吗?
输入
N D
2 100
T=[1 2]
Output
102
允许成员 1 在开始时间之前知道问题。他开始 比赛开始时向成员 2 解释问题。解释结束于 第 100 分钟。然后他们俩立即开始解决 并行的问题。成员 1 在第 101 分钟解决了第一个问题 成员 2 在第 102 分钟解决了第 2 个问题。
解码这类问题并解决它的最佳方法是什么?
【问题讨论】:
-
N可以有多大?我们可以选择谁在开始时间之前了解所有问题,还是总是成员 1? -
@IVlad N≤3×10^3 。是的,我们可以选择任何成员..不一定是 1..
-
问题陈述没有多大意义。鉴于您陈述的条件,解决所有问题总是需要
D + N分钟。现在,如果成员可以在向他解释问题后立即开始解决问题(即他不必等待所有问题都得到解释),那么您就有了要解决的问题。 -
@JimMischel 但是一个成员只能解决一个问题,一旦他解决了问题,他就必须坐 Idle 。所以我们需要确保在最短的时间内解决所有问题。
标签: algorithm dynamic-programming