Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. #include <assert.h>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <set>
  9. #include <map>
  10. #include <unordered_set>
  11. #include <queue>
  12. #include <unordered_map>
  13. #include <string.h>
  14. #include <bitset>
  15.  
  16. #define pb push_back
  17. #define mp make_pair
  18. #define fst first
  19. #define snd second
  20. #define ll long long
  21. #define forn(i, n) for (int i = 0; i < (int) (n); i++)
  22. #define forlr(i, l, r) for (int i = (int) l; i <= (int) (r); i++)
  23. #define forrl(i, r, l) for (int i = (int) r; i >= (int) (l); i--)
  24.  
  25. using namespace std;
  26.  
  27. const double EPS = 1e-6;
  28. const double PI = acos(-1.0);
  29.  
  30. const int64_t MOD = 1738974109872548207;
  31. const int MAXN = 100005;
  32.  
  33. const double eps = 1e-7;
  34.  
  35. double h, a, b, c, va, vb, vc;
  36.  
  37. double f2(double h2) {
  38. double l = 0, r = h2;
  39. for (int i = 0; i < 50; i++) {
  40. double m1 = l + (r - l) / 2.1;
  41. double m2 = r - (r - l) / 2.1;
  42. double n1 = h2 - m1;
  43. double n2 = h2 - m2;
  44.  
  45. double s1 = sqrt(b * b + m1 * m1) * vb + sqrt(c * c + n1 * n1) * vc;
  46. double s2 = sqrt(b * b + m2 * m2) * vb + sqrt(c * c + n2 * n2) * vc;
  47. if (s1 < s2) {
  48. r = m2;
  49. } else {
  50. l = m1;
  51. }
  52. }
  53.  
  54. return sqrt(b * b + l * l) * vb + sqrt(c * c + (h2 - l) * (h2 - l));
  55. }
  56.  
  57. double f1() {
  58. double l = 0, r = h;
  59. for (int i = 0; i < 50; i++) {
  60. double m1 = l + (r - l) / 2.1;
  61. double m2 = r - (r - l) / 2.1;
  62.  
  63. double s1 = sqrt(a * a + m1 * m1) * va + f2(h - m1);
  64. double s2 = sqrt(a * a + m2 * m2) * va + f2(h - m2);
  65. if (s1 < s2) {
  66. r = m2;
  67. } else {
  68. l = m1;
  69. }
  70. }
  71. return sqrt(a * a + l * l) * va + f2(h - l);
  72. }
  73.  
  74. int main() {
  75. ios_base::sync_with_stdio(0);
  76. cin.tie(0);
  77. cout.precision(10);
  78. cout << fixed;
  79.  
  80. int t;
  81. cin >> t;
  82.  
  83. while (t--) {
  84. cin >> h >> a >> b >> c >> va >> vb >> vc;
  85. cout << f1() << '\n';
  86. }
  87.  
  88. return 0;
  89. }
  90.  
  91. /*
  92. 2
  93. 10 3 4 3 1 1 1
  94. 21 5 12 4 4 3 4
  95. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement