zoj 2340 Little Jumper(三分 物理好题)

网友投稿 527 2022-08-27

zoj 2340 Little Jumper(三分 物理好题)

zoj 2340 Little Jumper(三分 物理好题)

​​< B时,我们相同过程推出:

v2x=gS(L−S)2Bv2y=v2xS2(B+12gS2v2x)2v=v2x+v2y−−−−−−√

solution: 上诉过程的基本假设是已知水平运动的距离,由此我们直接枚举那个距离,因为存在最小的速度,所以有技巧的枚举:三分。 注意此题需要人为的设定迭代次数,不然会超时。

#include #include #include using namespace std;const double eps=1e-15;double b1,t1,b2,t2,l,ds,df,g;double calc(double L,double S,double T,double B){ double h=S-S*S/L; if(h-T>eps){ double xx=g*S*(L-S)/2/T; double yy=xx/S/S*(T+0.5*g*S*S/xx)*(T+0.5*g*S*S/xx); return sqrt(xx+yy); } if(h-B<-eps){ double xx=g*S*(L-S)/2/B; double yy=xx/S/S*(B+0.5*g*S*S/xx)*(B+0.5*g*S*S/xx); return sqrt(xx+yy); } return sqrt(g*L);}double gv(double x){ double v1=calc(x+ds,ds,t1,b1),v2=calc(l-x+df,df,t2,b2); //L:总的长度 S:越点 T B return v1-v2>eps?v1:v2;}int main(){ //freopen("cin.txt","r",stdin); while(~scanf("%lf%lf",&b1,&t1)){ scanf("%lf %lf %lf %lf %lf %lf",&b2,&t2,&l,&ds,&df,&g); double lt=0,rt=l,mid1,mid2; double y1,y2; int c=0; while(rt-lt>eps && c++<100){ mid1=lt+(rt-lt)/3; mid2=rt-(rt-lt)/3; y1=gv(mid1); y2=gv(mid2); if(y1

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:linux之ssh远程登录
下一篇:python数据结构及部分语法笔记
相关文章

 发表评论

暂时没有评论,来抢沙发吧~