hdu1115(求多邊形的重心)

2021-09-26 02:06:42 字數 755 閱讀 9711

**和思路:

//①質量集中在頂點上

// n個頂點座標為(xi,yi),質量為mi,則重心

//  x = ∑( xi×mi ) / ∑mi

//  y = ∑( yi×mi ) / ∑mi

//  特殊地,若每個點的質量相同,則

//  x = ∑xi / n

//  y = ∑yi / n

//②質量分布均勻

//  特殊地,質量均勻的三角形重心:

//  x = ( x0 + x1 + x2 ) / 3

//  y = ( y0 + y1 + y2 ) / 3

//③三角形面積公式:s = ( (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1) ) / 2 ;

//因此做題步驟:1、將多邊形分割成n-2個三角形,根據③公式求每個三角形面積。

// 2、根據②求每個三角形重心。

// 3、根據①求得多邊形重心。

#include struct point

;double area(point p1, point p2, point p3)

int main()

gx = gx / sumarea / 3;

gy = gy / sumarea / 3;

printf("%.2lf %.2lf\n", gx, gy);

} return 0;

}

HDU1115 幾何 多邊形重心

三角形重心 x1 x2 x3 3,y1 y2 y3 3 這是特殊情況,各點的質量相等 多邊形 x sigma xi mi sumarea y sigma yi mi sumarea 先把多邊形變成多個三角形,分別求出mi 有點像面縮點 然後得到新的點的座標。view code 1 include2 ...

HDUoj 1115 求多邊形重心

題解 多邊形n個定點,分割成n 2個三角形,給每個三角形求出重心,因為每個三角形的面積不相同,所以重心的質量不一樣,問題轉換為求n 2個質量不均勻的點的重心。include include include includeusing namespace std const int maxn 1e6 5...

多邊形重心問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 在某個多邊形上,取n個點,這n個點順序給出,按照給出順序將相鄰的點用直線連線,第乙個和最後乙個連線 所有線段不和其他線段相交,但是可以重合,可得到乙個多邊形或一條線段或乙個多邊形和乙個線段的連線後的圖形 如果是一條線段,我們定義...