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 王胖浩与三角形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 散列函数和数字签名概念
- 下一篇: java.sql.SQLExceptio