swust OJ 249 求凸包面積模板

2021-10-10 10:47:19 字數 1380 閱讀 6003

用graham_scan 求出凸點,再用叉積求面積,乙個三角形的面積等於叉積的一半。

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#include

#define int long long

using

namespace std;

typedef pair<

int,

int> pii;

typedef

long

long ll;

const

int inf =

0x3f3f3f3f

;const

double eps =

1e-5

;const

int mod =

2013

;const

int n =

1e5+10;

int n;

struct pointpoint[n]

;// 叉積 求 ab x ac -> >0 c在 b 左

intcross

(point a,point b,point c)

#define c(x) ((x)*(x))

intdis

(point a,point b)

bool

cmp(point a,point b)

//進行處理,用棧來存元素,當有有拐趨勢,則出棧。

int stk[n]

,top =-1

;void

graham_scan()

}signed

main()

}if(n <3)

sort

(point+

1,point+n,cmp)

;int cnt =2;

for(

int i=

2;i(cross

(point[0]

,point[i-1]

,point[i])!=

0) point[cnt++

]= point[i]

; n = cnt;

graham_scan()

;double res =0;

for(

int i=

2;i<=top;i++

) res +

=cross

(point[0]

,point[stk[i-1]

],point[stk[i]])

; cout

)<<

(res/2)

<}return0;

}

swust oj 249 凸包面積

凸包面積 1000 ms 65535 kb 1078 3483 tags 分治法 麥兜是個淘氣的孩子。一天,他在玩鋼筆的時候把墨水灑在了白色的牆上。再過一會,麥兜媽就要回來了,麥兜為了不讓媽媽知道這件事情,就想用乙個白色的凸多邊形把牆上的墨點蓋住。你能告訴麥兜最小需要面積多大的凸多邊形才能把這些墨點...

swustoj凸包面積(分治法)

麥兜是個淘氣的孩子。一天,他在玩鋼筆的時候把墨水灑在了白色的牆上。再過一會,麥兜媽就要回來了,麥兜為了不讓媽媽知道這件事情,就想用乙個白色的凸多邊形把牆上的墨點蓋住。你能告訴麥兜最小需要面積多大的凸多邊形才能把這些墨點蓋住嗎?現在,給出了這些墨點的座標,請幫助麥兜計算出覆蓋這些墨點的最小凸多邊形的面...

swust oj凸包面積 0249 分治法

本文目錄 oj題目 分治法思路 具體過程 tips 測試資料 這道題本身不是很難喲,不要被嚇到,然後就可以開始做了o o 題目 分治法思路 見 先預排序,預排序後最左和最右的點肯定是凸包中的點。然後可以遞迴的從內向外擴充套件凸包,在當前直線的2側尋找最高點,最高點肯定在凸包中,這裡涉及到一些數學知識...