题目大意
题目总结:L. Last Orders
1. 核心目标
在所有酒吧关闭前,尽可能多地喝掉按顺序给出的品脱(Pints)。任务是计算最大可饮用数量。
2. 场景规则
-
起始状态:时间为 0,位于 1 号酒吧。
-
饮酒消耗:第 杯酒需要花费时间 。必须按 的固定顺序饮用。
-
地点限制:
- 全镇共有 个酒吧(对应 个交叉口)。
- 禁止连续在同一个酒吧喝两杯酒(每喝完一杯,下一杯必须换到另一个酒吧,之后可以再回来)。
-
时间限制:每个酒吧 有其绝对关门时间 。饮酒操作必须在酒吧关门之前或准时完成。
-
移动消耗:酒吧间通过 条双向道路连接,每条路有对应的行驶时间。
根据题目意思,酒馆关闭仅意味着不能在这个地方饮酒,不意味着就是该节点无法通过。
3. 样例解释
-
样例 1:
- 2 个酒吧,关门时间分别为 900 和 1500;酒吧 1 与 2 之间路程 90;饮酒时间序列为 60, 120, 180, 240…
- 流程示例:
- 在酒吧 2 喝第 1 杯(路程 90 + 饮酒 60 = 150s 1500,可行)。
- 回酒吧 1 喝第 2 杯(路程 90 + 饮酒 120 = 360s 900,可行)。
- 回酒吧 2 喝第 3 杯(路程 90 + 饮酒 180 = 630s 1500,可行)。
- 回酒吧 1 喝第 4 杯(路程 90 + 饮酒 240 = 960s)。此时 960 > 酒吧 1 的关门时间 900,无法在酒吧 1 喝第 4 杯。
- 最终通过合理分配,最大可喝 4 杯。
-
样例 2:
- 饮酒时间非常短(2s 或 3s),但酒吧关门时间也非常早(15s 到 35s)。
- 由于不能在同一酒吧连喝,必须频繁在 1、2、3、4 号酒吧之间切换(考虑路程 1 或 5),利用极短的饮酒时间在多个酒吧关门前完成饮用,最大可喝 7 杯。
思路讲解
这道题目还是没有那么难的。这个是我们所采用的这个状态定义。
转移采用分段转移的这个策略,就是每次只转移一步。
1 | ll ans=0; |
AC代码
AC
https://qoj.ac/submission/2015239
源代码
心路历程(WA,TLE,MLE……)
https://qoj.ac/submission/2014564
故意WA了一发,呃呃,这个是故意的。呃,我故意就是没有考虑到呃零节点,他呃就一节点他不喝酒的情况。