【问题标题】:A question about PriorityQuery application关于 PriorityQuery 申请的一个问题
【发布时间】:2021-05-28 10:01:00
【问题描述】:

我想知道是否可以实现优先查询来解决以下问题:假设有一所学校由于大流行需要调节其最大在校学生。例如,某天有 4 节课,分别是 50 人的 9:00-11:00、25 人的 10:00-12:00、60 人的 14:00-16:00 和 17:00- 18:00 与 70 名学生。那么现在最大的学生是 75,因为当它是 10:00-11:00 时,总共有 75 名学生上课。我最初的想法是创建两个优先队列,一个以课程开始时间为优先级,另一个以课程结束时间为优先级。有人可以对此提出任何建议吗?

【问题讨论】:

  • 我不明白使用时间作为优先级将如何解决任何问题。
  • 我认为这类似于合并间隔问题..

标签: java priority-queue


【解决方案1】:

您可以创建一个数组,其中每个索引代表一个小时。每个元素都是一个整数,表示在此期间学校允许有多少学生。

例如索引为 0 的数组元素 - 代表 00:00、22 - 23:00。

那么您示例的数组将如下所示:

[0(0:00),0,0,0,0,0,0,0,0,50(9:00),25(10:00),-50(11:00),-25(12:00),0,60(14:00),0,-60(16:00),70(17:00),-70(18:00),0,0,0,0,0]

然后,当您需要知道在特定时间允许的学生人数时,您需要简单地将数组元素相加到特定的 HOUR(index)。

例如,对于 11:00,它将是 0+0+0+0+0+0+0+0+0+50+25=75。

或者当您插入元素时,您也可以更新数组的其余部分,以计算每小时的确切容量。这样您就不必每次需要知道允许的学生人数时都计算总和。您的数据结构已经包含预先计算的值。 数组看起来像这样: [0(0:00),0,0,0,0,0,0,0,0,50(9:00),75(10:00),25(11:00),0(12:00),0,60(14:00),0,0(16:00),70(17:00),0(18:00),0,0,0,0,0]

这是在慢速选择和慢速插入之间进行权衡。

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多