甲、乙两人同时从A地出发要尽快同时赶到B地。出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。
输入格式:
仅一行,三个整数,分别表示AB两地的距离s米(≤2000),人的步行速度a米/秒,车的速度b米/秒,2000>b>a。
输出格式:
两人同时到达B地需要的最短时间,单位秒,保留2位小数。
样例输入:
120 5 25
样例输出:
9.60
题解:
这道题嘛,其实还没有好好把公式推出来,二分也不知道怎么写,但是意外地水过了
实在是数据的锅(望天),明天再试试吧
==============wo是分割线==============
然后,这次水题的经验似乎给我打开了一个新的水题方法,大概考试不会的时候值得一试
当然,这种方法只适用于小数运算到很多位的,但并没有准确值的题(大概会很少)
#include<iostream> #include<iomanip> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int x,a,b; double out=0; bool work(double m) { double ans,box,tim; tim=m*1.00/b; box=tim*a; ans=(m-box)/(a+b)*b+x-m; if(ans>=m-0.01&&ans<=m+0.01)//通过对大致取值的预测是可以得到答案的,经过测试发现:本题的小数可以很长... { out=m*1.00/b+(x-m)*1.00/a; return 1; } else return 0; } int main() { cout<<setiosflags(ios::fixed)<<setprecision(2); cin>>x>>a>>b; for(double i=1;i<=x;i+=0.01) { if(work(i)) { cout<<out<<endl; break; } } return 0; }
时间: 2024-12-15 04:59:33