時間限制:
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。
樣例輸入
12 3 3 3
樣例輸出
5.8216152143解題思路
本題中,對於三角形的面積我們採用海倫--秦九韶公式。即對三角形三邊為a,b,c。其面積s可以表示為:
d=(a+b+c)/2;
s=sqrt(d*(d-a)*(d-b)*(d-c))
那麼要使得面積最大,根據題目中的意思,我們可以推導出題目中的l段必須全部用(推導過程比較簡單,只要比較一下總長度遞增時,面積的變化情況即可)。同時,還需要考慮在對各個邊進行增長時需要使得其仍是三角形。因此,可以考慮從最短的邊進行加長。
編寫的**如下:
#include#includeusing namespace std;
void solve(double a,double b,double c ,double d);
double area_solve(double a,double b,double c);
int main()
return 0;
}void solve(double a,double b,double c ,double d)
else
if(flag==0)
else
} if(flag==1){
printf("%.11lf\n",aera2);
//cout《題目中,需要注意的是:
要求相對誤差不能超過10
-9
因此,暗示我們需要將其轉化為double型進行處理。同時輸出時,要有小數字進行輸出(想吐槽一下hihocoder上對cout輸出並不友好,在**中可以看到我後來將cout那段隱掉了,換用了printf)。
圓與三角形(圓與三角形是否相交)
給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試資料。4 1 三個數,前兩個數為圓心的座標xc,yc,第3個數為圓的半徑r。3000 xc,yc ...
圓與三角形
1298 圓與三角形 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試...
求大三角形中三角形個數
一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...