题意:三角形ABC的内切圆把它的三边分别划分成 m1:n1,m2:n2 和 m3:n3 的比例。另外已知内切圆的半径 r ,求三角形ABC 的面积。

#include<iostream>
#include<iomanip>
#include<algorithm>
#include<cmath>
#define sqr(a) (a)*(a)
#define eps 1e-12
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
#define pi asin(1.0) using namespace std; int sig(double a)
{
return (a>eps)-(a<-eps);
} int main()
{
int t;
double r,m1,n1,m2,n2,m3,n3,k1,k2,k3;
double left,right,mid,thy,th1,th2,th3;
cin>>t;
while(t--)
{
cin>>r>>m1>>n1>>m2>>n2>>m3>>n3;
k1=sqr(n1);
k2=sqr(n2/m2)*k1;
k3=sqr(m1);
left=min(sqrt(3/k1)*r,sqrt(3/k2)*r);
left=min(left,sqrt(3/k3)*r);
right=max(sqrt(3/k1)*r,sqrt(3/k2)*r);
right=max(right,sqrt(3/k3)*r);
mid=(left+right)/2;
while(sig(right-left)>0)
{
th1=r/sqrt(k1*sqr(mid)+sqr(r));
th2=r/sqrt(k2*sqr(mid)+sqr(r));
th3=r/sqrt(k3*sqr(mid)+sqr(r));
thy=asin(th1)+asin(th2)+asin(th3);
int f=sig(thy-pi);
if(f==0) break;
else if(f<0) right=mid;
else left=mid;
mid=(left+right)/2;
}
thy=2*asin(r/sqrt(k1*sqr(mid)+sqr(r)));
double area=(n1+m1)*mid/2*(n2+m2)*n1/m2*mid*sin(thy);
cout<<fixed<<setprecision(4)<<area<<endl;
}
return 0;
}

uva 11524 - InCircle (二分法)的更多相关文章

  1. UVa 11524:In-Circle(解析几何)

    Problem EIn-CircleInput: Standard Input Output: Standard Output In-circle of a triangle is the circl ...

  2. UVa 11524 - InCircle

    推公式 #include <cstdio> #include <cmath> double Cal( double a, double b, double c ) { retu ...

  3. ACM计算几何题目推荐

    //第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...

  4. UVA 3890 Most Distant Point from the Sea(二分法+半平面交)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=11358 [思路] 二分法+半平面交 二分与海边的的距离,由法向量可 ...

  5. uva 714 Copying Books(二分法求最大值最小化)

    题目连接:714 - Copying Books 题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况. 解 ...

  6. uVa 714 (二分法)

    Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   Description   Before th ...

  7. UVA 12097 LA 3635 Pie(二分法)

    Pie My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a numbe ...

  8. uva live 6190 Beautiful Spacing (二分法+dp试 基于优化的独特性质)

    I - Beautiful Spacing Time Limit:8000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu ...

  9. UVA 10668 - Expanding Rods(数学+二分)

    UVA 10668 - Expanding Rods 题目链接 题意:给定一个铁棒,如图中加热会变成一段圆弧,长度为L′=(1+nc)l,问这时和原来位置的高度之差 思路:画一下图能够非常easy推出 ...

随机推荐

  1. 《Java web 开发实战经典》读书笔记

    去年年末,也就是大四上学期快要结束的时候,当时保研的事情确定了下来,终于有了一些空闲的时间可以学点实用的技术. 之前做数据库课程设计的时候,也接触过java web的知识,当时做了一个卖二手书籍的网站 ...

  2. PHP Database ODBC 之 ODBC

    ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库). 创建 ODBC ...

  3. UGUI Button控件

    今天一起来学习下Button控件, Button控件其实是由Text,Button,Image组件形成的. 这里就简单介绍下Button组件 Interactable: 代表该组件是否进行交互, 我们 ...

  4. UISearchBar 点击X 按钮收键盘

    - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;{ NSLog(@"textD ...

  5. struts2采用convention-plugin实现零配置

    最近开始关注struts2的新特性,从这个版本开始,Struts开始使用convention-plugin代替codebehind-plugin来实现struts的零配置. 配置文件精简了,的确是简便 ...

  6. java的System.getProperty()方法能够获取的值

    java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装 ...

  7. <ListView>分列显示

    <ListView> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Width="{B ...

  8. java学习笔记day05

    1.final关键字:防止被继承的类或覆写的方法修改,变量或方法被final定义后  会在内在中存在 特点:   1)可以修饰类.函数.变量.   2)被final修饰的类不可以被继承.   3)被f ...

  9. Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  10. Android集成科大讯飞SDK语音听写及语音合成功能实现

    前言 现在软件设计越来越人性化.智能化.一些常见的输入都慢慢向语音听写方向发展,一些常见的消息提示都向语音播报发展.所以语音合成和语音听写是手机软件开发必不可少的功能.目前国内这方面做的比较好的应该是 ...