【发布时间】:2023-03-23 07:42:01
【问题描述】:
我被这个问题困住了(我的解决方案太慢了)。我将描述问题然后我的解决方案。
问题: 给定N 站,每个在数轴上的x_i 位置,我们想将机器人从第一个站移动到最后一个站(站按非排序- 以最低的货币成本减少x_i 订单)。我们有一个机器人,它以最大充电电池开始,具有K(不一定是整数)功率单位,并且可以移动每单位功率的E(不一定是整数)长度单位。在第一站和最后一站之间的任何站,我们都可以充电。每个站收取相同的统一费率F 美元开始充电,加上每单位电量补充c_i 美元。机器人ONLY可以充电,如果当时的电量在K/2或以下OR不充电就不能到达下一站;机器人每次充电,都要充电到 100%(即K)。
我的解决方案:我很确定这是最短路径问题的一种变体,但我们正在优化货币成本。我正在运行 Dijkstra SSSP。但是,对于每个州,我们都需要跟踪货币成本和剩余能源,因为通过在便宜的充电站充电而提前增加成本可能比把钱存到最后更好。因此,我没有继续维护cost[i]=cheapest known way to get to station i,而是维护cost[i][energy]=cheapest known way to get to station i with a certain energy。在优先级队列中,我仅按成本对状态进行排序,因为我不确定是否有办法为剩余成本和剩余能量创建启发式方法。这个算法在某些测试用例上确实很慢,因为如果E 和K 很大,那么每个站点都可能会到达它前面的每个站点,从而创建一个庞大的图形。我想我必须修剪搜索边界,但我不确定如何。有什么想法吗?
【问题讨论】:
标签: algorithm dijkstra shortest-path