1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| ##include <bits/stdc++.h>
using namespace std;
typedef long long ll; typedef long double ld; typedef pair<int, int> pdd;
##define INF 0x3f3f3f3f ##define lowbit(x) x & (-x) ##define mem(a, b) memset(a , b , sizeof(a)) ##define FOR(i, x, n) for(int i = x;i <= n; i++)
double Clac(double n, double p, double v) { return (min(n - p, p) + n) / v; }
void solve() { int _; scanf("%d",&_); while(_--) { double n, p1, v1, p2, v2; scanf("%lf%lf%lf%lf%lf",&n,&p1,&v1,&p2,&v2); if(p1 > p2) { swap(p1, p2); swap(v1, v2); } double ans; ans = min(Clac(n, p1, v1), Clac(n, p2, v2)); ans = min(ans, max((n - p1) / v1, p2 / v2));
double l = p1, r = p2; for(int i = 1;i <= 100; i++) { double mid = (l + r) / 2.0; double ans1 = Clac(mid, p1, v1); double ans2 = Clac(n - mid, p2 - mid, v2); ans = min(ans, max(ans1, ans2)); if(ans1 <= ans2) l = mid; else r = mid; } printf("%.10lf\n",ans); } }
signed main() { sovle(); }
|