Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <assert.h>
- #include <algorithm>
- #include <vector>
- #include <set>
- #include <map>
- #include <unordered_set>
- #include <queue>
- #include <unordered_map>
- #include <string.h>
- #include <bitset>
- #define pb push_back
- #define mp make_pair
- #define fst first
- #define snd second
- #define ll long long
- #define forn(i, n) for (int i = 0; i < (int) (n); i++)
- #define forlr(i, l, r) for (int i = (int) l; i <= (int) (r); i++)
- #define forrl(i, r, l) for (int i = (int) r; i >= (int) (l); i--)
- using namespace std;
- const double EPS = 1e-6;
- const double PI = acos(-1.0);
- const int64_t MOD = 1738974109872548207;
- const int MAXN = 100005;
- const double eps = 1e-7;
- double h, a, b, c, va, vb, vc;
- double f2(double h2) {
- double l = 0, r = h2;
- for (int i = 0; i < 50; i++) {
- double m1 = l + (r - l) / 2.1;
- double m2 = r - (r - l) / 2.1;
- double n1 = h2 - m1;
- double n2 = h2 - m2;
- double s1 = sqrt(b * b + m1 * m1) * vb + sqrt(c * c + n1 * n1) * vc;
- double s2 = sqrt(b * b + m2 * m2) * vb + sqrt(c * c + n2 * n2) * vc;
- if (s1 < s2) {
- r = m2;
- } else {
- l = m1;
- }
- }
- return sqrt(b * b + l * l) * vb + sqrt(c * c + (h2 - l) * (h2 - l));
- }
- double f1() {
- double l = 0, r = h;
- for (int i = 0; i < 50; i++) {
- double m1 = l + (r - l) / 2.1;
- double m2 = r - (r - l) / 2.1;
- double s1 = sqrt(a * a + m1 * m1) * va + f2(h - m1);
- double s2 = sqrt(a * a + m2 * m2) * va + f2(h - m2);
- if (s1 < s2) {
- r = m2;
- } else {
- l = m1;
- }
- }
- return sqrt(a * a + l * l) * va + f2(h - l);
- }
- int main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.precision(10);
- cout << fixed;
- int t;
- cin >> t;
- while (t--) {
- cin >> h >> a >> b >> c >> va >> vb >> vc;
- cout << f1() << '\n';
- }
- return 0;
- }
- /*
- 2
- 10 3 4 3 1 1 1
- 21 5 12 4 4 3 4
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement