首页 > 其他 > 详细

poj1927Area in Triangle

时间:2014-07-18 14:04:25      阅读:329      评论:0      收藏:0      [点我收藏+]

链接

物理渣只能搜题解了。。

分三种情况

1、len>=a+b+c

2、len<内切圆半径 圆的面积是最大的 --》以len为周长的圆

3、看这篇http://blog.sina.com.cn/s/blog_6a46cc3f0100tujn.html

bubuko.com,布布扣
 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #include<vector>
 7 #include<cmath>
 8 #include<queue>
 9 #include<set>
10 using namespace std;
11 #define N 100000
12 #define LL long long
13 #define INF 0xfffffff
14 const double eps = 1e-8;
15 const double pi = acos(-1.0);
16 const double inf = ~0u>>2;
17 int dcmp(double x)
18 {
19     if(fabs(x)<eps) return 0;
20     else return x<0?-1:1;
21 }
22 int main()
23 {
24     double a,b,c,l;
25     int kk = 0;
26     while(scanf("%lf%lf%lf%lf",&a,&b,&c,&l)!=EOF)
27     {
28         if(fabs(a)<eps&&fabs(b)<eps&&fabs(c)<eps&&fabs(l)<eps) break;
29         double p = (a+b+c)/2;
30         double area = sqrt(p*(p-a)*(p-b)*(p-c));
31         double r = sqrt((p-a)*(p-b)*(p-c)/p);
32         double ans ;
33         if(dcmp(2*pi*r-l)>=0)
34         {
35             ans = l*l/(4*pi);
36             //cout<<"2"<<endl;
37         }
38         else if(dcmp(l-a-b-c)>=0)
39         {
40             ans = area;
41             //cout<<"1"<<endl;
42         }
43         else
44         {
45             double k = (a+b+c-l)/(a+b+c-2*pi*r);
46             r*=k;
47             ans = area-area*k*k+pi*r*r;
48            // cout<<"3"<<endl;
49         }
50         printf("Case %d: %.2f\n",++kk,ans);
51     }
52     return 0;
53 }
View Code

poj1927Area in Triangle,布布扣,bubuko.com

poj1927Area in Triangle

原文:http://www.cnblogs.com/shangyu/p/3852978.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!