原来这个念 旋转卡qia壳ke…

题意:求平面内给定点集里的最远点对,$n \leq 5e4$


做法就是旋转卡壳啦,话说这题数据范围应该可以再大挺多的。

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=50005;
struct Point
{
double x,y;
Point(double x=0,double y=0):x(x),y(y){}
}p[N];
inline Point operator -(Point a,Point b)
{
return Point(a.x-b.x,a.y-b.y);
}
inline double cross(Point a,Point b)
{
return a.x*b.y-a.y*b.x;
}
inline double sqr2(double x){return x*x;}
inline double dist(Point a,Point b)
{
return sqrt(sqr2(a.x-b.x)+sqr2(a.y-b.y));
}
inline bool cmp(Point a,Point b)
{
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
inline int convexHull(Point *s,int n)
{
sort(p+1,p+n+1,cmp);
int t=0,k;
for(register int i=1;i<=n;i++)
{
while(t>1&&cross(s[t]-s[t-1],p[i]-s[t-1])<=0)t--;
s[++t]=p[i];
}k=t;
for(register int i=n-1;i>=1;i--)
{
while(t>k&&cross(s[t]-s[t-1],p[i]-s[t-1])<=0)t--;
s[++t]=p[i];
}
if(n>1)t--;
return t;
}
inline double rotatingCalipers(Point *s,int t)
{
int now=2;double ans=0;
s[t+1]=s[1];
for(register int i=1;i<=t;i++)
{
while(cross(s[i+1]-s[i],s[now]-s[i])<cross(s[i+1]-s[i],s[now+1]-s[i]))
now=now%t+1;
ans=max(ans,dist(s[i],s[now]));
}
return ans;
}
int n,t;
int main()
{
Point s[N];scanf("%d",&n);
for(register int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);
t=convexHull(s,n);printf("%.0lf",sqr2(rotatingCalipers(s,t)));
return 0;
}

最新文章

  1. 2016年11月3日 星期四 --出埃及记 Exodus 19:19
  2. 【面试题041】和为s的两个数字VS和为s的连续正数序列
  3. php.curl详解
  4. ios实例开发精品源码文章推荐
  5. MemSQL Start[c]UP 2.0 - Round 1 B. 4-point polyline (线段的 枚举)
  6. cocos2dx内存管理的一些看法
  7. with 与 debugger
  8. JavaScript之面向对象学习八(继承)
  9. Good Luck in CET-4 Everybody!(博弈)
  10. js柯里化的一个应用
  11. zencart 后台目录产品黄色icon_yellow_on.gif 解决方案
  12. Windows 10 IoT Serials 4 - 如何在树莓派上使用Cortana语音助手
  13. 【转】jqGrid学习之介绍
  14. CSS3动画效果之transition
  15. Windows server 2008R2远程桌面3389端口修改方法技巧
  16. 【小白技术笔记】保存皮皮虾APP无水印视频到手机相册,只需要三步 [技术干货]
  17. Hadoop【单机安装-测试程序WordCount】
  18. Alpha阶段敏捷冲刺(五)
  19. leetcode965
  20. div 模糊效果

热门文章

  1. Markdown的应知应会
  2. 20-SAP PI开发手册-ERP发布服务供外部系统调用(sproxy代理类)
  3. 2017年第八届蓝桥杯【C++省赛B组】B、C、D、H 题解
  4. FL Studio新手入门:FL Studio五大常用按钮介绍
  5. SpringBoot 实现微信推送模板
  6. 基于HAL库的STM32的DSP库详解(附FFT应用)
  7. python之切片操作,实现一个trim()函数,去除字符串首尾的空格.
  8. golang 自学系列(四)——debug for vscode
  9. day102:MoFang:后端完成对短信验证码的校验&amp;基于celery完成异步短信发送&amp;flask_jwt_extended&amp;用户登录的API接口
  10. 通过sql 语句将多行数据拼接到一行中