这题可以o(1)推出公式,也可以二分答案+验证。
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> using namespace std;double X1,X2,Y1,Y2; double v,t; double vx,vy,wx,wy;bool check(double mid) {double tmpx,tmpy;if(mid<=t){tmpx=X1+mid*vx;tmpy=Y1+mid*vy;double dis=sqrt((X2-tmpx)*(X2-tmpx)+(Y2-tmpy)*(Y2-tmpy));if(dis/v>mid) return 0;return 1;}else{tmpx=X1+t*vx;tmpy=Y1+t*vy;tmpx=tmpx+(mid-t)*wx;tmpy=tmpy+(mid-t)*wy;double dis=sqrt((X2-tmpx)*(X2-tmpx)+(Y2-tmpy)*(Y2-tmpy));if(dis/v>mid) return 0;return 1;} }int main() {scanf("%lf%lf%lf%lf",&X1,&Y1,&X2,&Y2);scanf("%lf%lf",&v,&t);scanf("%lf%lf%lf%lf",&vx,&vy,&wx,&wy);double l=0,r=9999999999;double ans;int t=200;while(t--){double mid=(l+r)/2.0;if(check(mid)){ans=mid;r=mid;}else l=mid;}printf("%.18lfn",ans);return 0; }
转载于:.html
本文发布于:2024-01-31 18:46:12,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170669797330591.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |