• UVA11524平面几何+二分法+海伦公式


    /*UVA11524
    平面几何:
    使用到的知识比较零碎:
    1、三角形内切圆是角平分线的交点,所以连接圆心和顶点,能产生3对全等三角形
    2、利用等量关系表示其他量
    3、求三角形的两种方法:海伦公式+周长*半径/2
    4、当代数式太复杂,手动难以化简,考虑用计算方法二分解决。
    */
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<stdlib.h>
    #include<math.h>
    #include<queue>
    #include<vector>
    #include<map>
    #define LL long long
    
    using namespace std;
    
    //输入 r,m1, n1, m2, n2, m3 and n3
    
    double r,m1,n1,m2,n2,m3,n3;
    int t;
    
    double Helen(double a)
    {
        double b=(m3+n3)/n3*m1/(n1+m1)*a;
        double c=(m2+n2)/m2*n1/(m1+n1)*a;
        double k=(a+b+c)/2;
        return sqrt(k*(k-a)*(k-b)*(k-c));
    }
    double F(double x)//x是二分变量AB
    {
        double b=(m3+n3)/n3*m1/(n1+m1)*x;
        double c=(m2+n2)/m2*n1/(m1+n1)*x;
        double hel=Helen(x);
        double Fx=hel*2/(x+b+c)-r;
        return Fx;
    }
    int main()
    {
        cin>>t;
        while(t--)
        {
            cin>>r>>m1>>n1>>m2>>n2>>m3>>n3;
            double L=0,R=10000000;
            while(R-L>1e-7)//F(x)单调递增,先负后正
            {
                double x=(L+R)/2;
                double Fx=F(x);
                if (Fx<0) L=x;else R=x;
            }
            printf("%.5lf
    ",Helen(L));
        }
        return 0;
    }
  • 相关阅读:
    Android NDK Downloads
    Download Blackarch Linux
    Download Kali Linux
    Download ubuntu Linux
    cocos2D-X 常见49种Action
    win10 快速访问存在 2345Downloads 删除解决方案
    C++ 短信验证码/通知
    windows 登陆服务器
    使用路由器的虚拟服务器
    C++:查找字符串字串并替换
  • 原文地址:https://www.cnblogs.com/little-w/p/3570194.html
Copyright © 2020-2023  润新知