【问题标题】:Algorithm to calculate shortest time in which two people can collect K items from N cities计算两个人从 N 个城市收集 K 个物品的最短时间的算法
【发布时间】:2016-09-22 03:02:14
【问题描述】:

有 N 个城市通过 M 条双向道路相连。每条道路恰好连接 2 个不同的城市,并有与之相关的行程时间。

这些城市有 K 种不同的物品。给定每个城市的物品清单。两个人站在 1 号城市。他们都需要在最短的时间内获得所有 K 件物品。为此,他们决定通过以下方式在他们之间分配购物。

两个人都选择了自己的路径,从城市 1 开始,到城市 N 结束。他们不一定需要走相同的路径。 旅行时,他们每个人都会在某些城市收集物品。 当两个人到达 N 市时,他们一定已经集体购买了所有 K 件物品。 如果一个人比另一个人先完成,他会在 N 市等待他的伙伴完成。这意味着总时间是他们各自旅行时间的最大值。任何人都可以在两者之间访问城市 N,但他们都必须在城市 N 完成他们的路径。

【问题讨论】:

  • 向我们展示您的尝试
  • 所以基本上是旅行商问题,除了你有两个推销员,你需要访问最多K个城市而不是所有城市,你可以在任何地方结束。除了“祝你好运!”之外,不确定你希望从 SO 问题中得到什么
  • 编程比赛的作弊者

标签: algorithm dynamic-programming graph-theory shortest-path


【解决方案1】:

我不确定它是否正确,但我们可以这样进行:

因为总行程时间是 max(t_1,t_2),其中 t_i 是 cat_i 的行程时间,所以我们首先使用 dijkstra 算法遍历图(树),同时记下收集到的鱼的种类....在 cat1 之后完成后,cat2 开始遍历。现在,如果另一个端点包含尚未收集的鱼类型,它将遍历给定的边缘。如果有多个这样的候选者,则选择低成本的路径

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多