hihoCoder挑战赛16 王胖浩与三角形
生活随笔
收集整理的这篇文章主要介绍了
hihoCoder挑战赛16 王胖浩与三角形
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目1 : 王胖浩与三角形
时间限制:1000ms
单点时限:1000ms
内存限制:256MB
描述
王胖浩有一个三角形,三边长为a,b,c。他有特殊的能力,能增加三条边的边长,增加的总长度不能超过l。
他想通过合理地使用他的特殊能力,使得三角形的面积最大。
输入
第一行一个整数T,表示测试数据个数。
以下T行,每行一个四个整数a,b,c,l。
数据范围:
1<=T<=104, 1<=a,b,c<=106, 0<=l<=106
输出
输出T行,每行一个实数,表示三角形的面积。要求相对误差不能超过10-9。
样例输入
1
2 3 3 3
样例输出
5.8216152143
海伦公式,以及智商的分类讨论
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; bool cmp(double a,double b) { return a<b; } int main() { int t,i,j,k; double l,p; double num[3]; scanf("%d",&t); while(t--){ scanf("%lf%lf%lf%lf",&num[0],&num[1],&num[2],&l); sort(num,num+3,cmp); if(num[1]-num[0]>=l){ num[0]+=l; } else if(num[2]-num[1]+num[2]-num[0]>=l){ num[0]=num[1]=(num[0]+num[1]+l)/2.0; } else { num[0]=num[1]=num[2]= (num[0]+num[1]+num[2]+l)/3.0; } p=(num[0]+num[1]+num[2])/2.0; printf("%.11f\n",sqrt(p*(p-num[0])*(p-num[1])*(p-num[2]))); } return 0; }总结
以上是生活随笔为你收集整理的hihoCoder挑战赛16 王胖浩与三角形的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 散列函数和数字签名概念
- 下一篇: uniapp 阿里云开发微信小程序一键登