当时做这道题时一直想退出物理公式来,但是后来推到导数那一部分,由于数学不好,没有推出来那个关于Θ的最值,后来直接暴力了,很明显超时了,忘了三分法的应用,这道题又是典型的三分求最值,是个单峰曲线,下面是代码
#include <stdio.h>
#include <math.h>
#define PI 3.1415926
int v, h;
double f(double i)//推倒物理公式
{
return v*v*1.0*sin(*i)/9.8+(sqrt(v*v*1.0*sin(i)*sin(i)+2.0*9.8*h)-v*sin(i))/9.8 * v*cos(i);
}
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
scanf("%d %d", &h, &v);
double ans = 0.0;
double l = 0.0, r = PI/;
double midl, midr;
while (r - l >= 1e-)//三分求最值
{
midl=(*l+r)/;//是由midl = (r - l) / 3 + l化简得来的
midr=(l+*r)/;//是由midr = (r - l) * 2 / 3 + l化简得来的
if(f(midl)>f(midr))//画图像比较好看这个关系
r=midr;
else
l=midl;
}
printf("%.2lf\n", f((r+l)/));
} return ;
}