【POJ1474】监控摄像头 半平面交
来源:互联网 发布:a星寻路算法介绍 编辑:程序博客网 时间:2024/05/01 19:24
题目描述
一个著名的仓库管理公司SERKOI 请你为其安装一套闭路监视系统,由于SERKOI 财力有限,每个房间只能安装一台摄像机,不过其镜头可以向任何方向转换。 请你写一个程序,对于给定的房间示意图,判断是否有可能在这个房间中的某一位置安置一台摄像机,使其能监视到房间的每一个角落。
题目大意
能否找到一个点,能看到多边形的每一个部位
数据范围
点数小于100
样例输入
4
0 0
0 1
1 1
1 0
8
0 0
0 2
1 2
1 1
2 1
2 2
3 2
3 0
0
样例输出
Floor #1
Surveillance is possible.Floor #2
Surveillance is impossible.
解题思路
半平面交,用边去切全图形,如果还有部分没有被切,则有点满足条件
代码原来我是用边去切的一个比较大的矩形,结果wrong了233。
#include <algorithm>#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>#include <ctime>#define Maxn 233333using namespace std;int n,nn,m;struct Point{ double x,y;}a[Maxn],b[Maxn],c[Maxn];void Init(){ for(int i=1;i<=m;i++) scanf("%lf%lf",&b[i].x,&b[i].y); n=m; memcpy(a,b,sizeof(b));}double Cross(Point a,Point b,Point c){ return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);}void AddCross(Point a,Point b,Point C,Point d){ double c1=Cross(a,d,b),c2=Cross(a,C,b); c[++nn]=(Point){(c1*C.x-c2*d.x)/(c1-c2),(c1*C.y-c2*d.y)/(c1-c2)};}void Cut(Point A,Point B){ nn=0; a[n+1]=a[1]; for(int i=1;i<=n;i++){ if(Cross(a[i],B,A)>=0){ c[++nn]=a[i]; if(Cross(a[i+1],B,A)<0)AddCross(A,B,a[i+1],a[i]); }else if(Cross(a[i+1],B,A)>0)AddCross(A,B,a[i+1],a[i]); } for(int i=1;i<=nn;i++)a[i]=c[i]; n=nn;}int main(){ int Case=0; while(scanf("%d",&m)&&m){ Init(); b[m+1]=b[1]; for(int i=1;i<=m;i++) Cut(b[i],b[i+1]); cout<<"Floor #"<<++Case<<"\n"; if(n)cout<<"Surveillance is possible.\n\n"; else cout<<"Surveillance is impossible.\n\n"; }}
0 0
- 【POJ1474】监控摄像头 半平面交
- BSOJ1850:POJ1474摄像头 计算几何 半平面交
- poj1474(半平面交)
- [POJ1474]Video Surveillance(半平面交)
- poj1474 Video Surveillance【半平面交】
- [POJ1474] 监控摄像头
- bsoj 1850 【POJ1474】监控摄像头
- pku2451 半平面交
- 半平面交
- 半平面交
- poj2540 半平面交
- 半平面交
- poj2451 半平面交
- 半平面交.....
- 半平面交
- POJ3384+半平面交
- HDU1632+半平面交
- POJ3525+半平面交
- 清除浮动多种方法类比
- Docker学习(二):不使用sudo执行Docker
- 游戏化学习:让学习之路成为游戏升级系统。
- jExcelAPI(jxl)操作Excel2003(xls格式)表格完整示例
- 如何在github上传自己的项目
- 【POJ1474】监控摄像头 半平面交
- jQuery的属性与样式之切换样式.toggleClass()
- java死锁
- 密码脱落
- 一种比较匀速的差值运算
- 49. Group Anagrams
- 判断手机音量大小,做出提醒
- PTA 5-8 哈利波特的考试 (Java实现)
- <Android开源库> Realm For Android~ Queries(译文)