国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【POJ3335】博物館守衛Rotating Scoreboard 半平面交

2019-11-06 06:51:56
字體:
來源:轉載
供稿:網友

題目描述

  現在有一個博物館,俯瞰圖是一個多邊形。現在想要在博物館內部設立一個守衛,但要求他可以看見博物館的每一個角落。現在想知道是否存在這樣一個點,使得安置其上的守衛可以完成任務。

數據范圍

點數小于100

樣例輸入

2 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

樣例輸出

YES NO

解題思路

和POJ1474的監控攝像頭幾乎完全沒有區別

代碼

#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(){ scanf("%d",&m); 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; scanf("%d",&Case); while(Case--){ Init(); b[m+1]=b[1]; for(int i=1;i<=m;i++) Cut(b[i],b[i+1]); if(n)cout<<"YES/n"; else cout<<"NO/n"; }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辽源市| 呼玛县| 定安县| 乌兰浩特市| 潼南县| 栖霞市| 昌都县| 唐海县| 京山县| 牟定县| 贵阳市| 南涧| 黔东| 洱源县| 寿宁县| 柏乡县| 桑植县| 沈丘县| 凌源市| 和平区| 修文县| 柯坪县| 内黄县| 阿图什市| 榆林市| 青田县| 六盘水市| 临漳县| 青龙| 辛集市| 澄迈县| 富裕县| 新乐市| 凤冈县| 齐齐哈尔市| 日照市| 镇沅| 合阳县| 文昌市| 南城县| 长垣县|