struct Point{//两个点相减是向量,二维向量叉乘是平行四边形面积
int x,y;
Point(int _x = 0, int _y = 0) :x(_x), y(_y) {}
Point operator -(const Point &p)const {
return Point(x - p.x, y - p.y);
}
long long operator ^(const Point &p) const {
return (long long)x*p.y - (long long)y*p.x;
}
}p[maxn];
面积 = abs((p[k] - p[i]) ^ (p[j] - p[i]));
其实只要把二维向量看做第三维数值为0的三维空间向量就行了, 根据三维向量行列式运算的结果,所得向量只有第三维非0,也就是说,V1(x1, y1) X V2(x2, y2) = x1y2 – y1x2,