poj 3348 Cows 求凸包面積

2022-05-29 12:21:14 字數 804 閱讀 3377

給出n個點,求得到凸包的面積

多邊形面積顯然很好求,就是鄰邊叉積之和/2。

問題在於怎麼求凸包上有哪些點。凸包顯然每個點都要在前兩個點連線的左邊(也就是逆時針位置),所以:

1、先確定乙個最近的點當原點(最近:x最小的情況下y最小)

2、以該點為原點將其餘點按極角排序(極角排序:約等同於將其他點按逆時針排列//因為極角啥的解釋起來好麻煩的)

3、按排好的序來往凸包裡新增(每次判斷是不是滿足粗體條件//且保證當前棧裡有》=2個元素)

4、我們得到了凸包

//所以說凸包還是挺簡單的啊~

#include#include#define n 50010

using namespace std;

int n,m,per[n];

struct point

point(int _x,int _y) : x(_x),y(_y) {}

point operator - (const point &b) const

double operator * (const point &b) const

bool operator < (const point &b) const

void graham()

}int nxt(int x)

int area(point x,point y,point z)

int solve()

return ret;

}int main()

POJ3348 Cows 求凸包面積

題意 求給定的n個座標形成的凸包面積 套公式即可。從而引入凸包 思路 本題利用叉乘求面積 選取凸包上的乙個點作為基點,然後把多邊形分成許多的三角形,然後用叉積去算三角形面積即可 求解凸包用到的是andrew演算法,graham演算法的變種,速度更快穩定性也更好。兩種演算法的複雜度均為o nlogn ...

POJ 3348 Cows 凸包 求面積

link 題意 給出點集,求凸包的面積 思路 主要是求面積的考察,固定乙個點順序列舉兩個點叉積求三角形面積和除2即可 date 2017 07 19 16 07 11 filename poj 3348 凸包面積 叉積.cpp platform windows author lweleth soun...

POJ 3348 Cows 凸包面積

題意 求凸包面積 50,取整 include include include include include include include using namespace std double eps 1e 12 struct cpoint double x mult cpoint a,cpoin...