旅行家的预算
文章目录 问题描述 题目分析 思路 代码 问题描述 洛谷P1016 题目分析 1、若在前一个油站把油加满都不能到下一个油站,则无法到达目的地。否则,一定可以到达目的地。 2、因为在任何一个油站都可以把油箱加满,所以当我们到达加油站i时,油站i之前的油站不再考虑,只需要考虑此时油箱里的油 和 油站i后面的油站。 3、也是因为在任何一个油站都可以把油箱加满,所以当我们到达加油站i时,只需要考虑从油站i要去往哪个油站,而不用考虑再去往哪个油站等其他后续问题。 4、假设油箱容量无上限,从现在的位置,我们希望跑到一个比现在位置油价更便宜的油站。用更便宜的油价加油继续往下跑。而且加油前,油箱里的价格更贵的油恰好用完。 5、在油箱容量有限的前提下,如果能跑到一个比现在位置油价更便宜的油站,那就跑过去。油价相等的地方也行,相当于扩充邮箱容量。如果能跑到的油站都比现在的油价贵,假设目的地无限远,那就在当前油站加满油,跑到能跑到的油价最低的油站。因为目的地无限远,所以加满油也跑不完,所以不用考虑会剩下油。 6、将目的地也看做一个油站,油价无穷小。那么上一条就不会出现剩油的情况。因为在到达目的地前的最后一次加油,不会出现“能跑到的油站都比现在的油价贵”的情况。 7、倘若出现多个油站油价相同,那么如果出发点油价<到达点油价,则去尽可能远的那个。如果出发点油价>到达点油价,则去尽可能近的那个。 思路 1