我正在考虑几天的this problem算法。我想出了不同的解决方案,但没有一个得到正确的输出。我正在考虑有向无环图,但似乎乘客可以往返,例如,从车站0到3,然后从3到0,然后从0到1。如果有人能描述一下,我将不胜感激。此问题的算法(而非代码)。为了便于查找,我也将问题放在这里。
您前往ICPC决赛的飞机将在短时间内起飞,这是唯一 到达机场的方式是乘公共汽车。不幸的是,一些公共汽车 驾驶员正在考虑进行罢工,所以您不知道是否 您可以准时到达机场。您的目标是计划行程 以最大程度地抓住您的飞机的方式。 您有一张详细的城市地图,其中包括所有巴士 站。您在0号车站,机场在1号车站。您 还具有每辆巴士何时出发的完整时间表 站并到达其目标站。此外,对于每个 公交车,您知道它实际将以 预定,而不是司机罢工和乘公共汽车 中止服务。假设所有这些事件都是独立的。那就是 如果您指定的公交车按计划运行的可能性不变 知道是否有其他公交车按计划运行。如果你到达 在公共汽车出发时间之前,您可以转移到该公共汽车。但 如果您正好在出发时间到达,您将没有足够的时间 该坐公交车了。您无法提前验证是否 给定的公交车将按计划运行-您只有在尝试 坐上大巴。因此,如果有两辆或多辆公交车在同一地点离开车站 时间,您可以尝试只参加其中之一。
输入
城市中的车站数量。下一行包含一个整数k (1≤k≤10 ^ 18),表示您必须到达的时间 飞机场。接下来的m条线中的每条描述一条总线。每行 包含整数a和b(0≤a,b
输出
显示假设您接住飞机的概率 遵循最佳行动方案。您的答案必须正确 绝对误差在10 ^ −6之内。
示例输入
8 4 1000 0 1 0 900 0.2 0 2 100 500 1.0 2 1 500 700 1.0 2 1 501 701 0.1 0 3 200 400 0.5 3 1 500 800 0.1 3 0 550 650 0.9 0 1 700 900 0.1
示例输出
0.3124
输入的第一行包含两个整数m(1≤m≤10 ^ 6)和n (2≤n≤10 ^ 6),表示公交车的数量和
答案 0 :(得分:2)
考虑与每个预定行程相关的到达事件。
如果您参加了一次到达,即如果您实际上成功地完成了计划的行程,那么您将在到达时间到达车站,然后决定从那里做什么。
对于每个到达目的地,如果您已经知道可能到达下一个到达地点的最佳概率,则可以轻松计算出进行飞行的最佳概率。
由于您可能到达下一个到达的地点都是以后,因此,如果您按相反的时间顺序处理所有可能到达的地点,则可以使用以下方法计算出每次到达之后的最佳飞行概率:仅是您已经计算出的概率。
该过程以您最初到达站点0的最佳可能性结束。
如果您聪明地实施,那么整个过程将花费O(N log N)的时间。