博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1584 计算几何
阅读量:5809 次
发布时间:2019-06-18

本文共 1144 字,大约阅读时间需要 3 分钟。

思路:

求一遍凸包

用三角形面积(叉积求一下)/边长

求出来高,跟半径比一比

坑点:凸包上三点共线

//By SiriusRen#include 
#include
#include
using namespace std;#define eps 1e-9const int N=1005;int n,top,k,f;double r;struct Point{
double x,y;}point[N],tubao[N],cir;Point operator-(Point a,Point b){Point c;c.x=a.x-b.x,c.y=a.y-b.y;return c;}bool operator<(Point a,Point b){
return abs(a.x-b.x)
r-eps;}int main(){ while(scanf("%d",&n)){ if(n<3)break;top=f=0; scanf("%lf%lf%lf",&r,&cir.x,&cir.y); for(int i=1;i<=n;i++)scanf("%lf%lf",&point[i].x,&point[i].y); sort(point+1,point+1+n); for(int i=1;i<=n;i++){ while(top>1&&cross(tubao[top],point[i],tubao[top-1])<-eps)top--; tubao[++top]=point[i]; }k=top; for(int i=n-1;i;i--){ while(top>k&&cross(tubao[top],point[i],tubao[top-1])<-eps)top--; tubao[++top]=point[i]; } if(top!=n+1){puts("HOLE IS ILL-FORMED");continue;} for(int i=1;i<=n;i++)if(!check(tubao[i],tubao[i+1]))f=1; for(int i=1;i<=n;i++) if(chaji(tubao[i+1]-tubao[i],cir-tubao[i])<0)f=1; printf("PEG WILL %sFIT\n",f?"NOT ":""); }}

 

转载于:https://www.cnblogs.com/SiriusRen/p/9382591.html

你可能感兴趣的文章
struts1——静态ActionForm与动态ActionForm
查看>>
七大关键数据 移动安全迎来历史转折点
查看>>
在AngularJS中学习javascript的new function意义及this作用域的生成过程
查看>>
盘点物联网网关现有联网技术及应用场景
查看>>
网络钓鱼大讲堂 Part3 | 网络钓鱼攻击向量介绍
查看>>
阿里云与Intel联合发布加密计算,亚洲首个云上“芯片级”数据保护
查看>>
1、下载安装scala编译器(可以理解为scala的jdk),地址:http://www.scala
查看>>
mui 总结2--新建第一个app项目
查看>>
nginx的lua api
查看>>
考研太苦逼没坚持下来!看苑老师视频有点上头
查看>>
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
定时任务的创建
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>