计蒜客 ICPC Pacific Northwest Regional Contest 2017 Gym-101615E Straight Shot
程序员文章站
2022-04-27 13:57:50
...
E题
一道物理题
题意:机器人从(0,0)出发,沿某一方向以速度 v 前进。
途径几条宽度不等的河流,具有向上或向下的速度。
问机器人能否在时间限制内到达(X,0)点。
思路:
分解速度
先求时间,再判断
刚开始写的时候,有一点没注意,导致 Too hard 的情况 输出了 “nan"。
解释是可能出现了非法运算。
检查发现,没有判断求出的 vy 是否比 v 大,就进行了开平方操作。
#include <bits/stdc++.h>
using namespace std;
// 速度分解 先求时间 再检验
// 输出了 nan ???
double n, x, v;
double ll, rr, vv, k=0;
int main()
{
scanf("%lf%lf%lf", &n, &x, &v);
for(int i=0; i<n; i++){
scanf("%lf%lf%lf", &ll, &rr, &vv);
k+=vv*(ll-rr);
}
double vy=k/x;
if(fabs(vy)>v) cout<<"Too hard"<<endl;
else{
double vx=sqrt(v*v-vy*vy);
double t=x/vx, flag=2*x/v;
if(t>flag) cout<<"Too hard"<<endl;
else printf("%.3lf\n", t);
}
//system("pause");
return 0;
}
上一篇: JavaScript重构(九):自定义的JavaScript产品框架
下一篇: 我面试别人的常见方式