HIHO 1245 王胖浩與三角形

2021-07-06 11:02:19 字數 1240 閱讀 9614

時間限制:

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
解題思路

本題中,對於三角形的面積我們採用海倫--秦九韶公式。即對三角形三邊為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,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...