简而言之,大意就是:三个穷人(买不起三座位的车),还非要同时到达。然后把这个烂摊子扔给你,让你求怎样时间最快?
你们不知道怎么就肯定我能知道啊(蒟蒻问号???)
。。。扯远了,言归正传,怎样找到最快同时到达的时间呢?
蒟蒻来贴思路了:
因为两个不开车的人速度相同。在需要同时到达的要求下,就可以肯定二者总路程是相同的,只是谁先坐车,谁先走的问题。
就有如下图形:
|||——x——|||— —(s-2*x)— —|||——x——|||
(x为甲,乙坐车)
在(s-2*x)时,甲坐车,乙步行。在(s-2*x)时甲下车,车回去接乙。
|||——x——|||— —(s-2*x)——|||——x——|||
————>||| (甲的行走路程)
车的路线: ———————————>>||| (坐车人为甲)
|<<——————||| (空车,回去接乙)
|———————————>> ||| (接上乙开到终点)
———>>|| (乙的行走路程)
【颜色相同的两段所用时间是相同的】
乙从走路到被接上车,设花费时间为t。
在时间t内,车跑了(s-2*x)*2+x 。而乙只行走了x 。
可建立方程:((s-2*x)*2+x)/b=x/a (b为车速,a为行走速度)
可求出x。敲代码就转化为 x=2*s*a/(3*a+b)
在通过t=x/a 求出时间。
然后就输出,Over...
顺附蒟蒻的代码:
#include<bits/stdc++.h> using namespace std; int main() { double s,a,b; ios_base::sync_with_stdio(0); cin.tie(0); cin>>s>>a>>b; double t,x; x=2*s*a*(1.0)/(3*a+b); t=x/(a*1.0)+(s-x)/(b*1.0); printf("%.6lf",t); return 0; }