首页 > 代码库 > HDU 5144 NPY and shot(三分法)
HDU 5144 NPY and shot(三分法)
当时做这道题时一直想退出物理公式来,但是后来推到导数那一部分,由于数学不好,没有推出来那个关于Θ的最值,后来直接暴力了,很明显超时了,忘了三分法的应用,这道题又是典型的三分求最值,是个单峰曲线,下面是代码
1 #include <stdio.h> 2 #include <math.h> 3 #define PI 3.1415926 4 int v, h; 5 double f(double i)//推倒物理公式 6 { 7 return v*v*1.0*sin(2*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); 8 } 9 int main()10 {11 int T;12 scanf("%d", &T);13 while (T--)14 {15 scanf("%d %d", &h, &v);16 double ans = 0.0;17 double l = 0.0, r = PI/2;18 double midl, midr;19 while (r - l >= 1e-6)//三分求最值 20 {21 midl=(2*l+r)/3;//是由midl = (r - l) / 3 + l化简得来的 22 midr=(l+2*r)/3;//是由midr = (r - l) * 2 / 3 + l化简得来的 23 if(f(midl)>f(midr))//画图像比较好看这个关系 24 r=midr;25 else26 l=midl;27 }28 printf("%.2lf\n", f((r+l)/2));29 }30 31 return 0;32 }
HDU 5144 NPY and shot(三分法)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。