hdu 5144 NPY and shot

时间:2023-03-08 21:46:28
hdu 5144 NPY and shot

http://acm.hdu.edu.cn/showproblem.php?pid=5144

题意:给你初始的高度和速度,然后让你求出水平的最远距离。

思路:三分枚举角度,然后根据公式求出水平距离。

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const double pi=acos(-1.0);
const double eps=1e-;
const double g=9.8; int t;
double h,v;
double ok(double x)
{
double xx=((double)(x/))*pi;
double t1=v*sin(xx)/g;
double y=v*t1*sin(xx)-0.5*g*t1*t1;
double yy=y+h;
double t2=sqrt(yy*/g);
double s=v*cos(xx)*(t1+t2);
return s;
} int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf",&h,&v);
double l=,r=;
double c;
while(r-l>eps)
{
double mid1=(r+l)/;
double mid2=(l+mid1)/;
if(ok(mid1)>=ok(mid2))
{
c=mid1;
l=mid2;
}
else
r=mid1;
}
printf("%.2lf\n",ok(c));
}
return ;
}