已知四邊形四條邊求四邊形最大面積

2021-08-21 10:18:29 字數 1453 閱讀 9688

有四根木棍,長度分別為 a b c d ,求著四根木棍組成四邊形的最大面積。

輸入格式

第一行包含乙個整數 ca ( ca ≤ 10000 ) ,表示有 ca 組測試資料,對於每組測試資料:

輸入包含一行,該行包含四個整數 a b c d ( 1 ≤ a , b , c , d ≤ 1000 ) 。

輸出格式

對於每組測試資料,輸出 "case c: ans" ,其中 c 表示測試資料編號, ans 表示最大的面積,小數點後保留六位,如果不能組成四邊形,則 ans 處輸出 -1 。

樣例輸入

3

1 2 4 8

2 3 4 5

6 3 2 5

樣例輸出

case 1: -1

case 2: 10.954451

case 3: 13.416408

#include using namespace std;

bool judge(double a,double b,double c,double d)

int main()

else

printf("case %d: -1\n",i);

} return 0;

}

推導:

(1)可以得到:s=

absina+cdsinc

(2)由餘弦定理可得:bd^2 = a^2+b^2-2abcosa = c^2+d^2-2cdcosc;

即: a^2+b^2-c^2-d^2 = 2abcosa-2cdcosc

(1)和(2)平方後相加(需要稍微的處理一丟丟)得:

4s^2+(a^2+b^2-c^2-d^2 )^2 /4 = (absina+cdsinc)^2+(abcosa-cdcosc)^2;

4s^2+(a^2+b^2-c^2-d^2 )^2 /4 = (ab)^2+(cd)^2-2abcd(cos(a+c));

當a+c = 180°時即cos(a+c) = -1  面積s最小(看出來了吧)

則:s^2 = ( (ab)^2+(cd)^2 +2*abcd )/4 - (a^2+b^2-c^2-d^2 )^2 /16;

s^2 = ( (2ab+2cd)^2- (a^2+b^2-c^2-d^2 )^2  ) / 16;

平方差公式後:

s^2 = (  (a+b)^2 - (c+d)^2)((c+d)^2 -  (a+b)^2  )/16

平方差公式後:

s^2 =(a+b+c-d)(a+b+d-c)(a+c+d-b)(b+c+d-a);

s =其中s為半周長:

四邊形優化

匆匆忙忙搞了一下四邊形優化,也就是做了幾道入門題而已 四邊形不等式詳解 反正我就記住這句話 判斷w是否為凸即判斷 w i,j 1 w i,j 的值隨著i的增加是否遞減 hdu 2829 include include include using namespace std define maxn 1...

四邊形填充

四邊形填充算,除了比較笨的洪流法外,就是掃瞄線法了 基本演算法是 1 求交,計算掃瞄線與多邊形的交點 2 交點排序,對第2步得到的交點按照x值從小到大進行排序 3 顏色填充,對排序後的交點兩兩組成乙個水平線段,以畫線段的方式進行顏色填充 4 是否完成多邊形掃瞄?如果是就結束演算法,如果不是就改變掃瞄...

定義四邊形 圓的內接四邊形

1 圓內接多邊形定義 多邊形的所有頂點都在同乙個圓上,這個多邊形叫圓內接多邊形,這個圓叫這個多邊形的外接圓。2 圓內接四邊形定義 四邊形的所有頂點都在同乙個圓上,這個四邊形叫圓內接四邊形,這個圓叫這個四邊形的外接圓。3 判定定理 如果乙個四邊形的對角互補,那麼它的四個頂點在同乙個圓上 簡稱四點共圓 ...