给定固定数量的教室的加权区间调度的变化

时间:2016-08-10 05:46:35

标签: dynamic-programming

考虑到固定数量的教室,我有一个关于解决加权区间调度问题的问题。因此,最初,我们给出一组间隔,每个间隔具有开始时间和结束时间,并且每个间隔具有权重。因此,问题的目的是在两个教室中找到最大化重量的时间表。有没有一种有效的方法可以通过动态编程来实现这一目标?

我的方法很简单,因为我构建的算法只是最大化每个教室的间隔。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我的想法不是完全动态的编程。但我认为这会有所帮助。

  1. 按开始时间排序所有课程。
  2. 现在上课找到下一课 j ,其开始时间大于或等于此结束时间。 (使用二进制搜索,你可以找到它,因为我们有一个按开始时间排序的排序数组)
  3. 假设max_so_far是一个数组,max_so_far [z]包含从 z 到最后的
  4. 的max_weight类
  5. 对于所有找到类[i]和重量max_so_far [j]
  6. 的最大重量总和

    请找到代码here 该代码的时间复杂度为O(nLog(n))。