link
題意:給出點集,求凸包的面積
思路:主要是求面積的考察,固定乙個點順序列舉兩個點叉積求三角形面積和除2即可
/** @date : 2017-07-19 16:07:11* @filename: poj 3348 凸包面積 叉積.cpp
* @platform: windows
* @author : lweleth ([email protected])
* @link :
* @version : $id$
*/#include #include #include #include #include #include #include #include #include #include #include #include //#include #define ll long long
#define pii pair#define mp(x, y) make_pair((x),(y))
#define fi first
#define se second
#define pb(x) push_back((x))
#define mmg(x) memset((x), -1,sizeof(x))
#define mmf(x) memset((x),0,sizeof(x))
#define mmi(x) memset((x), inf, sizeof(x))
using namespace std;
const int inf = 0x3f3f3f3f;
const int n = 1e5+20;
const double eps = 1e-8;
struct point
point(double _x, double _y)
point operator -(const point &b) const
double operator *(const point &b) const
double operator ^(const point &b) const };
double xmult(point p1, point p2, point p0)
double distc(point a, point b)
int sign(double x)
int cmpc(point a, point b)//水平序排序
point stk[10100];
int graham(point *p, int n)//水平序
int tmp = top;
for(int i = n - 2; i >= 0; i--)
if(n > 1)
top--;
return top;
}double area(point *p, int n)
point p[10100];
double x, y;
int n;
int main()
int m = graham(p, n);
/*for(int i = 0; i < m; i++)
printf("%lf %lf\n", stk[i].x, stk[i].y);*/
double ans = area(stk, m);
printf("%d\n", (int)(ans / 50));
} return 0;
}
POJ3348 Cows 求凸包面積
題意 求給定的n個座標形成的凸包面積 套公式即可。從而引入凸包 思路 本題利用叉乘求面積 選取凸包上的乙個點作為基點,然後把多邊形分成許多的三角形,然後用叉積去算三角形面積即可 求解凸包用到的是andrew演算法,graham演算法的變種,速度更快穩定性也更好。兩種演算法的複雜度均為o nlogn ...
poj 3348 Cows 求凸包面積
給出n個點,求得到凸包的面積 多邊形面積顯然很好求,就是鄰邊叉積之和 2。問題在於怎麼求凸包上有哪些點。凸包顯然每個點都要在前兩個點連線的左邊 也就是逆時針位置 所以 1 先確定乙個最近的點當原點 最近 x最小的情況下y最小 2 以該點為原點將其餘點按極角排序 極角排序 約等同於將其他點按逆時針排列...
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...