POJ 3348 Cows 凸包模板題

2022-08-19 08:09:09 字數 768 閱讀 7401

題目:

給幾個點,用繩子圈出最大的面積養牛,輸出最大面積/50

題解:graham凸包演算法的模板題

下面給出做法

1.選出x座標最小(相同情況y最小)的點作為極點(顯然他一定在凸包上)

2.其他點進行極角排序《極角指從座標軸的某一方向逆時針旋轉到向量的角度》,

極角一樣按距離從近到遠(可以用叉積實現)

3.用棧維護凸包上的點,將極點和極角序最小的點依次入棧

4.按順序掃瞄,檢查棧頂的前兩個元素與這個點構成的線段是否拐向右(順時針側,叉積小於0)

如果滿足就彈出棧頂元素,直到不滿足或者棧裡不足兩個元素

反之入棧

#include#include#include#include#define n 10005

using namespace std;

int n,m;

struct point

; point (int _x,int _y)

point operator - (const point &a)const

int operator * (const point &a) const

int norm()const

}p[n],q[n];

bool cmp(int u,int v)

void graham()

}int area()

int main()

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...

POJ 3348 Cows 凸包裸題

給出n個點,求乙個凸包,然後將凸包面積除以50,下取整就是答案。直接用安德魯演算法求出凸包 求出上下凸殼 然後再求多邊形面積即可。主要是用來試板子的。include include include include include include define rep i,a,b for int i ...

POJ3348 Cows 求凸包面積

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