CF864C Bus
题目描述
一辆公交车沿着坐标轴 $Ox$ 从 $x=0$ 点移动到 $x=a$ 点。它从 $x=0$ 出发,到达 $x=a$ 后立即掉头返回 $x=0$。回到 $x=0$ 后又立即返回 $x=a$,如此往返。这样,公交车就在 $x=0$ 和 $x=a$ 之间来回行驶。从 $x=0$ 到 $x=a$ 或从 $x=a$ 到 $x=0$ 都称为一次公交行程。公交车总共需要完成 $k$ 次行程。
公交车的油箱最多能装 $b$ 升汽油。每行驶一个单位距离恰好消耗 $1$ 升汽油。公交车在第一次行程开始时油箱是满的。
在点 $x=f$ 处有一个加油站。该点位于 $x=0$ 和 $x=a$ 之间。公交车在往任一方向经过加油站时都可以停下来,把油箱加满,也就是加油后油箱中有 $b$ 升汽油。除了这里,行驶路径上没有其他加油站。
请你求出,公交车至少需要在 $x=f$ 处加油几次才能完成 $k$ 次行程?第一次行程从 $x=0$ 开始。
如果无法完成 $k$ 次行程,输出 $-1$。
输入格式
第一行包含四个整数 $a$、$b$、$f$、$k$,分别表示第一次行程的终点、公交车油箱容量、加油站所在的位置,以及需要完成的行程次数。
满足 $0
输出格式
输出完成 $k$ 次行程所需的最少加油次数。如果无法完成 $k$ 次行程,输出 $-1$。
说明/提示
在第一个样例中,公交车每次行程都需要加油。
在第二个样例中,公交车一次可行驶 $10$ 单位距离而无需加油。公交车可以完成整个第一次行程,第二次行程行驶 $4$ 单位到达加油站后加油,再完成剩余的第二次行程,并从第三次行程中行驶 $2$ 单位又到达加油站,再次加油。之后可以加满油完成第三、第四次行程。此时到达终点时油将耗尽。
在第三个样例中,公交车无法完成所有 $3$ 次行程,因为即使在第二次行程中加油,油箱中也只有 $5$ 升汽油,但距下一个加油点需要行驶 $8$ 单位距离。
由 ChatGPT 5 翻译