poj2187Beauty Contest(凸包直径)
利用旋转卡壳
参考博客http://www.cppblog.com/staryjy/archive/2010/09/25/101412.html
- #include <iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<stdlib.h>
- #include<vector>
- #include<cmath>
- #include<queue>
- #include<set>
- using namespace std;
- #define N 50010
- #define LL long long
- #define INF 0xfffffff
- const double eps = 1e-;
- const double pi = acos(-1.0);
- const double inf = ~0u>>;
- struct point
- {
- int x,y;
- point(int x=,int y = ):x(x),y(y){}
- }p[N],ch[N];
- typedef point pointt;
- pointt operator - (point a,point b)
- {
- return point(a.x-b.x,a.y-b.y);
- }
- int dcmp(double x)
- {
- if(fabs(x)<eps) return ;
- return x<?-:;
- }
- double cross(point a,point b)
- {
- return 1.0*a.x*b.y-a.y*b.x;
- }
- double mul(point p0,point p1,point p2)
- {
- return cross(p1-p0,p2-p0);
- }
- int dis(point a)
- {
- return a.x*a.x+a.y*a.y;
- }
- bool cmp(point a,point b)
- {
- if(dcmp(mul(p[],a,b))==) return dis(a-p[])<dis(b-p[]);
- return dcmp(mul(p[],a,b))>;
- }
- int graham(int n)
- {
- int i,k=,top;
- point tmp;
- for(i = ; i< n; i++)
- {
- if(p[i].y<p[k].y||(p[i].y==p[k].y&&p[i].x<p[k].x))
- k = i;
- }
- if(k!=)
- swap(p[],p[k]);
- sort(p+,p+n,cmp);
- ch[] = p[];
- ch[] = p[];
- top = ;
- for(i = ; i < n; i++)
- {
- while(top>&&dcmp(mul(ch[top-],ch[top],p[i]))<=)
- top--;
- ch[++top] = p[i];
- }
- return top;
- }
- int rotating_calipers(int n)
- {
- int q = ;
- int ans = ;
- ch[n] = ch[];
- for(int i = ; i < n; i++)
- {
- while(mul(ch[i+],ch[q+],ch[i])>mul(ch[i+],ch[q],ch[i]))
- q = (q+)%n;
- ans = max(ans,max(dis(ch[i]-ch[q]),dis(ch[i+]-ch[q+])));
- }
- return ans;
- }
- int main()
- {
- int n,i;
- while(scanf("%d",&n)!=EOF)
- {
- for(i = ; i < n;i++)
- scanf("%d%d",&p[i].x,&p[i].y);
- int top = graham(n);
- int ans = rotating_calipers(top+);
- printf("%d\n",ans);
- }
- return ;
- }
poj2187Beauty Contest(凸包直径)的更多相关文章
- POJ 2187 Beauty Contest【旋转卡壳求凸包直径】
链接: http://poj.org/problem?id=2187 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
- 【POJ 2187】Beauty Contest(凸包直径、旋转卡壳)
给定点集的最远两点的距离. 先用graham求凸包.旋(xuán)转(zhuàn)卡(qiǎ)壳(ké)求凸包直径. ps:旋转卡壳算法的典型运用 http://blog.csdn.net/hanch ...
- poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)
/* poj 2187 Beauty Contest 凸包:寻找每两点之间距离的最大值 这个最大值一定是在凸包的边缘上的! 求凸包的算法: Andrew算法! */ #include<iostr ...
- UVa 1453 - Squares 旋转卡壳求凸包直径
旋转卡壳求凸包直径. 参考:http://www.cppblog.com/staryjy/archive/2010/09/25/101412.html #include <cstdio> ...
- POJ 2187 - Beauty Contest - [凸包+旋转卡壳法][凸包的直径]
题目链接:http://poj.org/problem?id=2187 Time Limit: 3000MS Memory Limit: 65536K Description Bessie, Farm ...
- POJ2187Beauty Contest(任意点的最远距离 + 凸包)
题目链接 题意:就是给N个点的坐标,然后求任意两个点距离的平方最大的值 枚举超时. 当明白了 最远距离的两个点一定在凸包上,一切就好办了.求出凸包,然后枚举 #include <iostream ...
- POJ 3384 Feng Shui 凸包直径 + 半平面交
G++一直没有过了 换成 C++果断A掉了...It's time to bet RP. 题意:给一个多边形,然后放进去两个圆,让两个圆的覆盖面积尽量最大,输出两个圆心的坐标. 思路:将多边形的边向里 ...
- POJ 2187 Beauty Contest 凸包
Beauty Contest Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 27276 Accepted: 8432 D ...
- POJ2187Beauty Contest 旋转卡壳
题目链接 http://poj.org/problem?id=2187 先求凸包 再求凸多边形直径 旋转卡壳模板题 #include<cstdio> #include<cstring ...
随机推荐
- Redis 安装 启动 连接 配置 重启
Linux下安装 ]# wget http://download.redis.io/releases/redis-2.8.17.tar.gz ]# .tar.gz ]# cd redis- ]# ma ...
- 学习JS中的小问题
1.如果载入的2个js文件中有重名函数,那么调用的时候怎么分别调? 第二个文件载入无效. 2.checkbox jQuery对象的checked属性在选中时为checked,否则为undefined: ...
- vnc里鼠标拖动终端就会产生ctrl+c终端
然后把有道词典给关了就好了...
- vs2013的asp.net 管理
iisexpress.exe /path:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ASP.NETWebAdminFiles /vpath:/AS ...
- Java中的ClassLoader
Java中类的加载过程(如Dog类): 通过类型信息定位Dog.class文件. 载入Dog.class文件,创建相应的Class对象. 执行父类的静态字段定义时初始化语句和父类的静态初始化块 ...
- HDU How many integers can you find 容斥
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- CentOS 安装ftp
Linux安装ftp组件 1 安装vsftpd组件 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件. [root@bogon ~]# yum -y insta ...
- 2016 Al-Baath University Training Camp Contest-1 E
Description ACM-SCPC-2017 is approaching every university is trying to do its best in order to be th ...
- linux ssh 使用深度解析(key登录详解)
SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Gr ...
- [poj2104] K-th Number (主席树)
主席树 Description You are working for Macrohard company in data structures department. After failing y ...