SP26179 JC15A - Windy Cannon题解
SP26179 JC15A - Windy Cannon
题目传送门
题意
大致意思就是给定大炮,目标的位置以及炮弹的速度、风速和风向,求打中目标的时间(结果保留
分析
读题可得出,如果想要时间尽量短的话,我们直接将大炮向目标点的方向开, 这样可以充分利用他的初始速度。
众所周知,风向和开炮的方向只有同向和异向
AC code
#include <bits/stdc++.h>
using namespace std;
double a, b, s, vd, vf, tim;
char wd;
int main()
{
scanf("%lf%lf%lf%lf%c", &a, &b, &vd, &vf, &wd);
if ((a > b && wd == 'R') || (a < b && wd == 'L'))//若方向不同,加上风速的相反数,就可和同向一起处理了。
vf *= -1;
s = abs(b - a);
tim = s / (vd + vf);
if (tim < 0)//若风速 > 炮弹的速度,时间会变成负数,此时输出 "Impossible" 即可。
cout << "Impossible" << endl;
else//否则输出时间
cout << fixed << setprecision(6) << tim << endl;//保留 6 位小数
return 0;//结束运行
}
本蒟蒻第三次写题解,管理大大求过