POJ 1279 Art Gallery 半平面交 + 多边形面积
来源:互联网 发布:手机版仓库进销存软件 编辑:程序博客网 时间:2024/05/19 13:58
模板题,没什么好说的。
View Code
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;#define eps 1e-8struct point{ double x, y;}p[1505], tmp[1505], q[1505];double a, b, c;void get_line(point p1, point p2){ a = p2.y - p1.y; b = p1.x - p2.x; c = p2.x * p1.y - p2.y * p1.x;}point intersect(point p1, point p2) { double u = fabs(a * p1.x + b * p1.y + c); double v = fabs(a * p2.x + b * p2.y + c); point ret; ret.x = (p1.x * v + p2.x * u) / (u + v); ret.y = (p1.y * v + p2.y * u) / (u + v); return ret;}int n, m;void cut() { int tm = 0; int i; for(i = 1; i <= m; i++) { if(a * q[i].x + b * q[i].y + c >= 0) tmp[++tm] = q[i]; else { if(a * q[i-1].x + b * q[i-1].y + c > 0) tmp[++tm] = intersect(q[i-1], q[i]); if(a * q[i+1].x + b * q[i+1].y + c > 0) tmp[++tm] = intersect(q[i], q[i+1]); } } for(i = 1; i <= tm; i++) q[i] = tmp[i]; q[0] = tmp[tm]; q[tm + 1] = tmp[1]; m = tm;}void solve(){ int i; for(i = 1; i <= n; i++) q[i] = p[i]; p[n+1] = p[1]; q[0] = q[n]; q[n+1] = q[1]; m = n; for(i = 1; i <= n; i++) { get_line(p[i], p[i+1]); cut(); }}double cal(int n, point *p){ int i; double s = 0; p[n+1] = p[1]; for(i = 1; i <= n; i++) s += p[i].x * p[i+1].y - p[i].y * p[i+1].x; return fabs(s) / 2;} int main(){ int i, j, cas; scanf("%d", &cas); while(cas--) { scanf("%d", &n); for(i = 1;i <= n; i++) scanf("%lf%lf", &p[i].x, &p[i].y); solve(); if(m >= 3)printf("%.2f\n", cal(m, q) ); else printf("0.00\n"); } return 0;}
- POJ 1279 Art Gallery 半平面交 + 多边形面积
- poj 1279 Art Gallery(求多边形核的面积+半平面交)
- poj 1279 Art Gallery(半平面交求多边形核面积)
- POJ 1279 Art Gallery 半平面交+求多边形核的面积
- POJ-1279 Art Gallery(求多边形内核面积,半平面交)
- POJ 1279 Art Gallery (半平面交求面积)
- POJ 1279 Art Gallery 半平面交求面积
- POJ 1279 Art Gallery(半平面交)
- poj 1279 Art Gallery 半平面交
- [POJ 1279]Art Gallery:半平面交
- POJ 1279 Art Gallery [半平面交]
- POJ 1279 Art Gallery(半平面交求多边形核)
- POJ 1279 Art Gallery (半平面交求内核面积)
- poj 1279 Art Gallery (半平面交)
- poj 1279 Art Gallery(半平面交)
- POJ 1279 Art Gallery (计算几何+半平面交)
- POJ 1279 Art Gallery 多边形内核面积
- POJ 1279 || Art Gallery(半平面交求核面积
- POJ 3348 Cows 凸包 + 多边形面积公式
- POJ 1654 Area 多边形面积
- 0829
- POJ 2954 Triangle pick公式
- POJ 半平面交 模板题 三枚
- POJ 1279 Art Gallery 半平面交 + 多边形面积
- POJ 3525 Most Distant Point from the Sea 半平面交 +二分
- POJ 3384 Feng Shui 半平面交
- POJ 1755 Triathlon 半平面交
- ORACLE Checkpoint-检查点队列与增量检查点
- POJ 2540 Hotter Colder 半平面交 求可行域面积
- HDU 3699 A hard Aoshu Problem 2010 Asia Fuzhou Regional Contest J题 模拟 + 搜索
- HUD 3697 Selecting courses 2010 Asia Fuzhou Regional Contest E题 贪心
- HDU 3586 Information Disturbing 树形DP