P1258 小车问题
数学问题
思路
当甲和乙都被车载过一次并且同时到终点最快,也就是车载甲到A点然后回去载乙,最后和甲于终点相遇
计算
-
甲的运动
- t1 = x/b
- t2 = (s-x)/a
- t甲 = x/b + (s-x)/a
-
车的运动
- 车在x处把甲放下
- 乙走了a*x/b
- 车和乙的距离 = x - a*x/b
- t相遇 = (x - a * x / b) / (a + b) = x * (b - a) / b * (a + b)
- 相遇点到起始点的距离 = a*x/b + a * t相遇 = ax/b + ax(b-a)/b(a + b)
-
乙的运动
- 一开始的运动时间t1 + t相遇 = x/b + x(b-a) / b(a+b)
- 剩余时间 s - a(t1 + t相遇) / b
- t乙 = t1 + t相遇 + t3
-
t甲 = t乙 ——>
(s - x) / a = x(b-a) / b(a+b) + (s - a(x/b + x(b-a)/b(a+b)))/b
x = s(a+b)(b-a) / (2ab+b2-3a2)
T = x/b + (s-x)/a = s(a+3b) / b(3a+b)
#include <iostream>
#include <cstdio>
using namespace std;
double s, a, b;
int main()
{
scanf("%lf %lf %lf", &s, &a, &b);
printf("%.6f\n", (s * (a + 3 * b)) / (b * (3 * a + b)));
return 0;
}

浙公网安备 33010602011771号