#include<stdio.h>
#include<math.h>
#define g 9.8
int main()
{
int t,x1,y1,x0,y0,T,i;
double vx,vy,s,mid1,mid2;
scanf("%d",&T);
for(i=0;i<T;i++)
{
scanf("%d%d%d%d%d",&x0,&y0,&x1,&y1,&t);
vx=(x1-x0)*1.0/t;
vy=(y1-y0+g*t*t/2)/t;
mid1=sqrt((g*t-vy)*(g*t-vy)*1.0+vx*vx*1.0);
mid2=sqrt(vy*vy*1.0+vx*vx*1.0);
s=((g*t-vy)/2*mid1+vx*vx/2*log(g*t-vy+mid1)+vy/2*mid2-vx*vx/2*log(-vy+mid2))/g;
if(s>sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)))
{
printf("%.3lf\n",s);
}
else printf("Impossible.\n");
}
return 0;
}
这是今天多校比赛做出来的唯一一个题目,关键是对IMPOSSIBLE的理解,既然是曲线,则必然比两点之间的距离大,这就是IMPOSSIBLE的关键
还有一点是对曲线的积分,这是队里的队友积的,暂时还没自己积,等下自己积来看一下