LA 2512 —— Art Gallery(半平面交)

题目:Art Gallery

题意:在一个建筑物里面要放置一个监控,使得能监控到建筑物里所有地方,问能放置监控的面积有多大。

简单的半平面交,直接套模板然后求面积即可,模板是参考《训练指南》的。

输入我是当它是顺时针(分析第一个样例。。。),好像我来回读了几遍题目都没get到点输入顺序的信息 = = ,但是如果没顺序感觉又确定不了建筑物。。。但至少按照顺时针是能AC的。。。

#include
#include
#include
#include
using namespace std;
const double eps = 1e-8;
const int N = 2001;
struct Point{
	double x, y;
	Point(){}
	Point(double x, double y):x(x),y(y){}
};
typedef Point Vector;
Vector operator + (Vector A, Vector B){
	return Vector(A.x+B.x, A.y+B.y);
}
Vector operator - (Point A,  Point B){
	return Vector(A.x-B.x, A.y-B.y);
}
Vector operator * (Vector A, double a){
	return Vector(A.x*a, A.y*a);
}
Vector operator / (Vector A, double a){
	return Vector(A.x/a, A.y/a);
}
int dcmp(double x){
	if(fabs(x) 0;
}
Point GetIntersection(Line a, Line b){
	Vector u = a.P-b.P;
	double t = Det(b.v, u) / Det(a.v, b.v);
	return a.P+a.v*t;
}
Point pt[N], poly[N];
Line L[N], Q[N];
int t, n;
int HalfPlane(){
	sort(L, L+n);
	int head, tail;
	Q[head=tail=0] = L[0];
	for(int i=1; i


你可能感兴趣的:(几何)