传送门
模板题,求凸包,用旋转卡壳求出最远点对。
因为把int弄成double,WA了好几次,差点对idy大神给的模板失去信心。。。不过事实证明idy的写法没问题,orz!

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
#define eps 1e-10
#define MAXN 50002
int n,nxt[MAXN];
struct Point {int x,y;Point (int x=0,int y=0):x(x),y(y) {}friend bool operator <(const Point &a,const Point &b) {return a.x<b.x||(a.x==b.x&&a.y<b.y);}
};
typedef Point Vector;
vector<Point> Po,S;
Vector operator + (Vector a,Vector b) {return Vector(a.x+b.x,a.y+b.y);}
Vector operator - (Vector a,Vector b) {return Vector(a.x-b.x,a.y-b.y);}
Vector operator * (Vector a,int s) {return Vector(a.x*s,a.y*s);}
Vector operator / (Vector a,int s) {return Vector(a.x/s,a.y/s);}
inline int dcmp(int x) {return (x>-eps)-(x<eps);}
inline int dot(Vector a,Vector b) {return a.x*b.x+a.y*b.y;}
inline int cross(Vector a,Vector b) {return a.x*b.y-a.y*b.x;}
inline int len(Vector a) {return dot(a,a);}
inline int area(Point a,Point b,Point c) {return fabs(cross(b-a,b-c)/2.0);}
vector<Point> convex(vector<Point> Po) {S.clear();int n=Po.size(),top=0;sort(Po.begin(),Po.end());for (int i=0;i<n;++i) {while (top>1&&cross(S[top-1]-S[top-2],Po[i]-S[top-2])<=0) S.pop_back(),--top;S.push_back(Po[i]),++top;}int k=top;for (int i=n-2;i>=0;--i) {while (top>k&&cross(S[top-1]-S[top-2],Po[i]-S[top-2])<=0) S.pop_back(),--top;S.push_back(Po[i]),++top; }if (n>1) S.pop_back(),--top;return S;
}
int maxdis(vector<Point> p) {int j=1,n=p.size();int ret=0;p[n]=p[0];for (int i=0;i<n;++i) {while (fabs(cross(p[i+1]-p[i],p[j]-p[i]))<fabs(cross(p[i+1]-p[i],p[j+1]-p[i])))j=(j+1)%n;ret=max(ret,max(len(p[j]-p[i]),len(p[j]-p[i+1])));}return ret;
}
int main() {
//  freopen("poj 2187.in","r",stdin);scanf("%d",&n);for (register int i=1;i<=n;++i) {int x,y;scanf("%d%d",&x,&y);Po.push_back(Point(x,y)); }printf("%d\n",maxdis(convex(Po)));return 0;
}

poj 2187(旋转卡壳)相关推荐

  1. Bridge Across Islands POJ - 3608 旋转卡壳求凸包最近距离

    \(\color{#0066ff}{题目描述}\) 几千年前,有一个小王国位于太平洋的中部.王国的领土由两个分离的岛屿组成.由于洋流的冲击,两个岛屿的形状都变成了凸多边形.王国的国王想建立一座桥来连接 ...

  2. poj 2079(旋转卡壳)

    题意:求出平面内的点集所组成的面积最大的三角形. 解题思路:考虑凸包+旋转卡壳.面积最大的三角形的三点必定在凸包的顶点上,只不过这里要注意,三角形的边不一定就是凸包的边,有可能三角形相邻两点是横跨凸包 ...

  3. POJ 3608 旋转卡壳

    思路: 旋转卡壳应用 注意点&边  边&边  点&点 三种情况 //By SiriusRen #include <cmath> #include <cstdi ...

  4. poj 3608 旋转卡壳求不相交凸包最近距离;

    题目链接:http://poj.org/problem?id=3608 #include<cstdio> #include<cstring> #include<cmath ...

  5. poj 2187 Beauty Contest (凸包: 最远点对,最长直径 , 旋转卡壳法)

    http://poj.org/problem?id=2187 题意: 最长的点对近距离的平方: 题解: 旋转卡壳法, 要注意的地方是,有 所有点共线的情况,所以,(求凸包时)要将,共线点去出 :    ...

  6. POJ 2187 凸包+旋转卡壳

    思路: 求个凸包 旋转卡壳一下 就求出来最远点对了 注意共线情况 也就是说   凸包如果有一堆点共线保留端点即可 //By SiriusRen #include <cmath> #incl ...

  7. POJ - 2187 Beauty Contest (求距离最远点对-凸包+旋转卡壳/枚举 (旋转卡壳学习))

    链接:https://vjudge.net/problem/POJ-2187 题意:求求距离最远点对. 思路:肯定为凸包上的点,可枚举,也可根据凸包性质旋转卡壳求对踵点. 参考博客: https:// ...

  8. poj 2187 凸包or旋转qia壳法

    题意: 给n(50000)个点,求这些点与点之间距离最大的距离. 解析: 先求凸包然后暴力. 或者旋转卡壳大法. 代码: #include <iostream> #include < ...

  9. POJ - 2187 Beauty Contest(最远点对)

    http://poj.org/problem?id=2187 题意 给n个坐标,求最远点对的距离平方值. 分析 模板题,旋转卡壳求求两点间距离平方的最大值. #include<iostream& ...

最新文章

  1. 应用软件(E-MAIL-FTP-WEB)
  2. 【 C 】队列的链式存储实现
  3. java1.5连接oracle12c_java1.5连接oracle12c
  4. 面试必问,如何控制多个线程的执行顺序
  5. linux usb视频开发板,ARM开发板上USB 摄像头图像采集实现
  6. python args kwargs 理解_*args和**kwargs在python中的作用
  7. 三星智能电视将用户语音隐私泄露给第三方?
  8. Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig
  9. 转:Windows Azure Platform体验(3):Azure AppFabric
  10. win10锁屏账户和计算机名,如何隐藏Windows 10锁屏姓名及电子邮件地址
  11. 用javascript实现点击按钮删除一个文本框
  12. 使用键盘设置桌面计算机图标的显示不出来,显示桌面,小编教你显示桌面图标不见了如何恢复...
  13. bzoj 3640 JC的小苹果
  14. doors需求管理导入HTML,Telelogic Doors 需求管理工具使用手记
  15. 大盘点 | 2020年「21篇」医学影像算法最佳综述
  16. HDU 1512 Monkey King 左偏树 + 并查集
  17. PS如何快速使用对象选择工具抠图?
  18. 01005封装的优缺点
  19. java合成两张图片并在图片上写字
  20. ES系列二之常见问题解决

热门文章

  1. 调度器锁rt_enter_critical() rt_exit_critical()
  2. 树莓派:64位 RPI OS(Bullseye) 更换国内源
  3. Gamemaker小实例——马里奥实现(后附资源+exe文件)
  4. 连发 4 款处理器!面对苹果 AMD 的围堵,英特尔要改革 X86 了
  5. python eel 多线程_Python的一个轻量级桌面GUI开发第三方库:Eel
  6. 独享还是共享,你选择哪一种锁?(独享锁/共享锁)
  7. 微信开发与应用实验一、创建微信公众号
  8. 单点故障--名词解释
  9. WM_INITDIALOG与WM_CREATE消息的区别
  10. 电脑游戏计算机哪年发明的,电子计算机发明于哪一年