POJ1279 Art Gallery (二)

2014-11-24 01:21:31 · 作者: · 浏览: 11
e area = 0;
for(int i = 1; i < n-1; i++) {
area += det(v.a[i]-v.a[0], v.a[i+1]-v.a[0]);
} if(area < 0) { polygon temp;
temp.n = n; temp.a[0] = v.a[0];
for(int i = n-1; i >= 1; i--) {
temp.a[n-i] = v.a[i]; }
return temp; } return v; }
double get_area(polygon_convex v) {
double area = 0; int n = v.P.size();
for(int i = 1; i < n-1; i++) {
area += det(v.P[i]-v.P[0], v.P[i+1]-v.P[0]);
} return area/2; } int main() {
polygon v; point tmp;
int T;
int n; scanf("%d", &T);
while(T--) { scanf("%d", &n);
v.n = 0; for(int i = 0; i < n; i++) {
scanf("%lf%lf", &tmp.x, &tmp.y);
v.a[i] = tmp; v.n++; //别忘了。
} v = init(v);
polygon_convex ans = core(v);
double result = get_area(ans);
printf("%.2lf\n", result); } return 0; }