到网上查一下,四边形的费马点就:

如果是凸四边形,就是对角线的交点。

如果是凹四边形,就是该凹点。

本来很简单,由于粗心,先是这样想的:枚举四个点的距离,再算出对角线的距离,取最小就行了,这样是错的,必须要判断凸包问题,在分别求。

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std ;
struct node{double x,y;
}p[4],rec[4];double Min;
double dis(node a,node b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
bool cross(node a,node b,node c){return (a.x-c.x)*(b.y-c.y)>=(a.y-c.y)*(b.x-c.x);
}
bool cmp(node a,node b){if(a.y!=b.y) return a.y<b.y;return a.x<b.x;
}int graham(int n)
{int i,pos=1;sort(p,p+n,cmp);if(n==0) return 0;rec[0]=p[0];if(n==1) return 1;rec[1]=p[1];if(n==2) return 2;rec[2]=p[2];for(i=2;i<n;i++){while(pos&&cross(p[i],rec[pos],rec[pos-1])) pos--;rec[++pos]=p[i];}int len=pos;rec[++pos]=p[n-2];for(i=n-3;i>=0;i--){while(pos!=len&&cross(p[i],rec[pos],rec[pos-1])) pos--;rec[++pos]=p[i];}return pos;
}void make()
{double d;Min=9999999;for(int i=0;i<4;i++){d=0;for(int j=0;j<4;j++){d+=dis(p[i],p[j]);}if(d<Min) Min=d;}
}
int main()
{double t1,t2;int op;while(1){op=0;for(int i=0;i<4;i++){scanf("%lf %lf",&p[i].x,&p[i].y);if(p[i].x==-1&&p[i].y==-1) op++;}if(op==4) break;int cnt=graham(4);if(cnt==4){Min=0;Min+=dis(rec[0],rec[2]);Min+=dis(rec[1],rec[3]);} else make();   printf("%.4f\n",Min);  //又忘记了poj不能用lf,贡献了一次WA!}return 0 ;
}

poj 3990 四边形费马点相关推荐

  1. 关于三角形的心及费马点

    垂心是三角形三条高的交点 内心是三角形三条内角平分线的交点 即内接圆的圆心 重心是三角形三条中线的交点 外心是三角形三条边的垂直平分线的交点 即外接圆的圆心 旁心,是三角形两条外角平分线和一条内角平分 ...

  2. 【学习笔记】高斯整数、高斯素数、费马平方和(全部相关概念及例题详解)《初等数论及其应用》

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 以下内容摘自 我的文章:算法竞赛中的数论问题 - 数论全家桶(信奥 / 数竞 / ACM)作者孟繁宇, ...

  3. 数论杂谈(欧拉定理与费马小定理结论与应用)

    文章目录 欧拉定理: 欧拉定理性质: 扩展欧拉定理: 费马小定理: 指数循环节 费马大定理 逆元: 例题 原根 定义: 原根存在条件 例题 快速幂 代码 矩阵快速幂 原理: 代码: 欧拉定理: aφ( ...

  4. 数论四大定理(欧拉定理、费马小定理、中国剩余定理、威尔逊定理)

    前置知识 同余 假设 a,ba,ba,b 都是整数,如果 nnn 是一个正整数,且存在整数 kkk 使得 a−b=k×na−b=k \times na−b=k×n,则称 a,ba,ba,b 模 nnn ...

  5. 欧拉定理 费马小定理

    前言 学基础数论的时候看过证明,然而很快就忘了,最近在学习高深一点的数论,于是再复习一下欧拉定理和费马小定理. 欧拉定理 内容 若正整数 \(a,n\) 互质,则 \(a^{\varphi(n)}\e ...

  6. 「欧拉定理」学习笔记(费马小定理)

    欧拉定理:对于互质的两个正整数$a, n$,满足$a^{φ(n)} ≡ 1\  (mod\ n)$ 证明: 设集合$S$包含所有$n$以内与$n$互质的数,共有$φ(n)$个:$$S = \{ x_1 ...

  7. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  8. 子段乘积(逆元费马小定理)+线段树做法

    题解:一开始做这个题的时候想过尺取法,但是因为没有逆元的知识,不知道该如何不断删除左端元素.其实这题并不难想,设l,r为两端开始都置为1,当长度小于k的时候不断乘右端元素并取余,当长度等于k时删除左端 ...

  9. luogu P2613 【模板】有理数取余(费马小定理,乘法逆元)

    整理的算法模板合集: ACM模板 目录 题目传送门 题目传送门 相当于是一个高精的费马小定理求乘法逆元.虽然数据达到了101000110^{10001}1010001,但是我们可以使用快读然后一直模m ...

最新文章

  1. fiddler 看懂瀑布图Timeline
  2. 修改系统默认区域语言日期格式
  3. 艾瑞发布2018视频云行业报告,网易云信领跑第一阵营
  4. Nginx核心模块——HTTP中的配置指令location和rewrite介绍
  5. “记录”是给世界做积极贡献的一种方式
  6. 理解Java操作数据库原理
  7. 探索HTTP传输中gzip压缩的秘密
  8. 计算机论文的字体要求,论文格式要求及字体大小
  9. 肿瘤基因检测的解读流程
  10. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。
  11. 字节流和字符流(详解)
  12. 人工智能一些基础知识
  13. Excel无法加载power pivot加载项
  14. vc按钮按下后变灰(不能再按)
  15. 【Java学习路线之JavaWeb】JSP教程
  16. 魔都地铁租房的时间和租金测算
  17. Modbus-RTU读取线圈
  18. base64 转各种类型的图片
  19. python写地下城脚本下载_用python编写脚本下载电子邮件附件
  20. 越狱后天气闪退 iPhone5天气闪退解决方法

热门文章

  1. 使用repo和git进行工程管理
  2. 信号脉宽、脉冲宽度(持续更新中)
  3. LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]
  4. 通过实例学Android应用开发01
  5. _WIN32_WINNT最新定义
  6. 吴恩达【神经网络和深度学习】Week4——深层神经网络
  7. itext将html转为pdf,图片标签为base64的处理
  8. cdr如何画空心字?
  9. 计算机操作系统读书心得,操作系统读书报告(共10篇).docx
  10. 国内云服务器厂商该怎么选择?那个比较好?