Codeforce 327D 二分
来源:互联网 发布:淘宝搭配套餐的链接 编辑:程序博客网 时间:2024/05/16 06:14
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const double eps = 1e-7;double X1, Y1, X2, Y2, Vmax, t, Vx1, Vy1, Vy2, Vx2;bool check(double mid){double X = X2, Y = Y2, D = Vmax * mid;if (mid >= t){X -= Vx2 * (mid - t) + Vx1 * t;Y -= Vy2 * (mid - t) + Vy1 * t;}else{X -= Vx1 * mid;Y -= Vy1 * mid;}if ((X - X1) * (X - X1) + (Y - Y1) * (Y - Y1) <= D * D) return true;else return false;}int main(int argc, char const *argv[]){while (~scanf("%lf%lf%lf%lf", &X1, &Y1, &X2, &Y2)){scanf("%lf%lf", &Vmax, &t);scanf("%lf%lf%lf%lf", &Vx1, &Vy1, &Vx2, &Vy2);double l = 0, r = 1e9, mid = (l + r) / 2;while (r - l >= eps){if (check(mid)) r = mid;else l = mid;mid = (l + r) / 2;}printf("%.7lf\n", r);}return 0;}
最大的难度在于英语。。。。。。
从A点坐飞船到B点,飞船相对空气飞行的最大速度为vmax,速度大小方向可以随时改变.天气预报说今天有大风,t时刻前风向及大小用向量(ux,uy)表示,而t时刻之后转变为(vx,vy).当飞船相对空气静止时,在风(wx,wy)作用下将以(wx,wy)的速度运动.也就是说,实际速度向量是飞船速度向量和风速合成的结果. 问,至少需要多少时间才能从A点到达B点.
已知时间大于Vmax时,必然到达。那么显然就是二分或者三分。
恩,需要一些物理上的小技巧,把相对地面坐标系换成相对风,这样就简单多了。
确定B点在反向风力下运动t′时间(注意风向在t时刻改变)后的位置,而这段时间内飞船能到达的位置与飞船距离不超过t′∗vmax,也就是说只要判断运动t′时间后的B点到飞船的距离是否不超过t′∗vmax即可确定飞船能否在t′时间内从A点出发到达B点.
0 0
- Codeforce 327D 二分
- codeforce 689D 【二分+RMQ】
- codeforce 439D 二分或者三分
- codeforce 359D 二分+ 动态规划(sparse table)
- Codeforces Round #377 (Div. 2) D. Exams && codeforce 732 D 详解(贪心+二分)
- codeforce 689C 【二分】
- codeforce 749 D. Leaving Auction 拍卖 (set+二分) 思维题!!!
- codeforce 11D
- codeforce 161 D
- codeforce 237 C D
- codeforce 143D dp
- codeforce D. Password
- Codeforce 340D
- codeforce D. Password
- codeforce D. Password
- codeforce 492 C D
- (10D)codeforce
- Codeforce 148D
- 关于LGame项目结构分析
- 六、Drawable
- 19. UDP 编程
- 安卓静态Fragment与动态Fragment的理解
- 给定两个已排序的表L1和L2 只使用基本的表操作编写计算L1∩L2的过程 交集
- Codeforce 327D 二分
- 圆与圆
- HIVE的内部表和外部表
- AsyncTask使用以及源码分析
- UVA 10253Series-Parallel Networks
- nginx配置ajax请求跨域
- ProgressDialog使用总结
- JVM 内部运行线程介绍
- 8051单片机学习篇(二)---流水灯