zoukankan      html  css  js  c++  java
  • poj 2507Crossed ladders <计算几何>

    链接:http://poj.org/problem?id=2507

    题意:哪个直角三角形,一直角边重合, 斜边分别为 X, Y, 两斜边交点高为 C , 求重合的直角边长度~

    思路: 设两个三角形不重合的两条直角边长为 a , b,根据 三角形相似, 则有 1/a + 1/b =1/c, 二分枚举答案得之~

     1 #include <cstdio>
     2 #include <cmath>
     3 #include <iostream>
     4 #include <algorithm>
     5 #include <cstring>
     6 using namespace std;
     7 double x, y, c;
     8 const double eps=1e-8;
     9 double get( double p )
    10 {
    11     return 1.0/sqrt( x*x-p*p ) + 1.0/sqrt( y*y-p*p );
    12 }
    13 int main( )
    14 {
    15     while( scanf("%lf%lf%lf", &x, &y, &c)!= EOF ){
    16         double l=0, r=min( x, y ), mid;
    17         while( l<r ){
    18             mid=(l+r)/2;
    19             if( get(mid) > 1.0/c )
    20                 r=mid-eps;
    21             else if( get(mid) < 1.0/c )
    22                 l=mid+eps;
    23             else break;
    24         }
    25         printf("%.3f
    ", mid);
    26     }
    27     return 0;
    28 }
    View Code
  • 相关阅读:
    数据库01
    并发编程6
    并发编程5
    并发编程4
    并发编程3
    并发编程2
    并发编程1
    kali 下文件操作
    kali driftnet
    2017.1.1
  • 原文地址:https://www.cnblogs.com/jian1573/p/3204797.html
Copyright © 2011-2022 走看看