題目:
給幾個點,用繩子圈出最大的面積養牛,輸出最大面積/50
題解:graham凸包演算法的模板題
下面給出做法
1.選出x座標最小(相同情況y最小)的點作為極點(顯然他一定在凸包上)2.其他點進行極角排序《極角指從座標軸的某一方向逆時針旋轉到向量的角度》,
極角一樣按距離從近到遠(可以用叉積實現)
3.用棧維護凸包上的點,將極點和極角序最小的點依次入棧
4.按順序掃瞄,檢查棧頂的前兩個元素與這個點構成的線段是否拐向右(順時針側,叉積小於0)
如果滿足就彈出棧頂元素,直到不滿足或者棧裡不足兩個元素
反之入棧
#include#include#include#include#define n 10005using 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 ...