【问题标题】:Finding maximum possible size of subset given conditions在给定条件下查找子集的最大可能大小
【发布时间】:2014-03-27 03:34:00
【问题描述】:

这是过去比赛中的一个问题。不幸的是,那场比赛没有社论,所以我在问这个问题。您可以验证比赛是否结束:Problem Description

我尝试使用 DP 使用子集和问题的变体来解决它。但我不知道如何强制规定在比赛开始时当前的燃料应该超过比赛所需的燃料。我正在计算差异并查看使用子集总和是否有可能小于初始燃料的总和。但在这种情况下,我无法强制执行约束。

谁能帮我为这个问题制定一个动态规划算法。或者如果无法使用动态编程,我可以使用其他方法。

【问题讨论】:

    标签: algorithm combinations dynamic-programming subset


    【解决方案1】:

    如果比赛的顺序是固定的,那么可能更容易找到一个足够快的动态程序。我将概述一个结构定理,即一种添加约束的方法,它至少会留下一个最优解。 DP 可以利用这些约束,在这种情况下,它们相当于竞赛排序。这是提高动态程序运行时间的一般策略。

    考虑一个特定的比赛时间表。假设钱德勒在一场净燃油增加的比赛之前参加了一场净燃油损失的比赛。没有理由他不能在赢利赛跑之后在输球赛跑:在两场比赛开始时,他都会比在可行的赛程中获得更多的燃料。因此,我们可以假设 Chandler 在所有损失之前安排所有收益。

    假设 Chandler 参加背靠背的增益竞赛,前提条件燃料量为 s 和 s'。如果 s > s',那么他可以再次进行转换,并为两场比赛找到更多的起步燃料。我们可以假设收益是通过增加前提燃料来排序的。

    假设 Chandler 以先决条件燃料量 s 和 s' 参加背靠背的亏损竞赛。如果 s

    【讨论】:

    • 能否详细说明。我是 DP 的初学者,不明白你说什么。
    • 在我看来,他的解决方案确实不是 DP。他证明了给定的贪心排序总是最优的。
    • 那么我应该使用哪种算法?
    • @RobNeuhaus 是的,这不是 DP。 DP 对按指定顺序运行比赛的时间表进行优化。处理完每场比赛后的表格是一张地图,从参加的比赛数量到给定参与水平的最大可用燃料。
    • @DavidEisenstat 那么你能解释一下我应该如何进行吗,任何开始都会有帮助。
    猜你喜欢
    • 2016-04-11
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    相关资源
    最近更新 更多