gpt4 book ai didi

algorithm - 模块化算术难题 codeforces

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:37:14 26 4
gpt4 key购买 nike

一辆汽车以每秒 v 米的速度从 A 点移动到 B 点。 Action 发生在 X 轴上。在距离 A 米 d 处有红绿灯。从时间 0 开始,前 g 秒绿灯亮,接下来的 r 秒红灯亮,然后绿灯再次亮 g 秒,依此类推。

汽车可以立即从 0 加速到 v,反之亦然,可以立即从 v 减速到 0。假设它在绿灯时立即通过交通信号灯。如果汽车在红灯刚亮的瞬间接近红绿灯,它就来不及通过。但是如果它在绿灯刚亮的瞬间接近红绿灯,它就可以移动了。汽车在 0 时刻离开 A 点。

在不违反交通规则的情况下,汽车从 A 点到达 B 点的最短时间是多少?

输入 整数 l, d, v, g, r (1 ≤⟩l,⟩d,⟩v,⟩g,⟩r⟩≤⟩1000,⟩d⟩<⟩l) — A 和 B 之间的距离(以米为单位),从 A 到红绿灯的距离,车速、绿灯时长、红灯时长。

解决方案

if(g*v>d)
ans = l/v // i got it
else
ceil(d/v/g+r)*(g+r)+(l-d)/v // i am not getting Please help

例子->假设 l=5 ,d=4,v=1,g=2 ,r=1

在 t=0 时,汽车从 $A $ 开始

在 t=2 时,灯变成红色,但汽车离灯很远,所以继续行驶没问题

在 t=3 时,灯再次变绿 $2$ 秒(直到 $t=5$)

在 t=4 时,灯仍然是绿色的,我们在灯亮时到达

注意->我们已经过了红绿灯别担心

在 t=5 时,我们到达 B 点

但正确的 ans = 7 这不是我做错的最小值?

上面的方法被一个红色程序员使用,我也在下面包括了他的解决方案链接。

请帮助我很难过,我正试图从 3 天开始找到正确的逻辑。

在这里,你们是我最后的希望。

问题链接problem b

Accepted solution link of red coder

注意-> 上面接受的解决方案给出了 7 作为输出,但我认为它应该是 5。所以这不会错,因为 codeforces 接受了它。

最佳答案

是的,你是对的,答案应该是 5。

条件g * v > d没有任何意义。它只是检查您是否可以在第一个绿灯阶段通过红绿灯。其实应该是((d + v - 1) / v) % (g + r) < g .首先我们用 (d + v - 1) / v 计算我们在哪一秒通过红绿灯(整数除法)与 ceil(d / v) 相同如果我们使用 float 。然后用模数计算我们在绿色红色循环中通过交通信号灯的位置。如果结果是< g当它是绿色的时候我们通过了它,解决方案是(double)l / v .

您可以使用与上述模数相同的技术来获得我们必须在红绿灯处 parking 的秒数,然后加上从开始到红绿灯的时间(整秒)和从红绿灯开始的时间到目的地。或者我们可以计算经过红绿灯时到绿红循环结束所需的秒数。这就是您所做的,但是缺少大括号,因此对于 float ,我们可以使用带有附加大括号的公式:
ceil(d / v / (g + r)) * (g + r) + (l - d) / v .

关于algorithm - 模块化算术难题 codeforces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55829543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com