题目背景

此处省略1W字^ ^

题目描述

贝茜在牛的选美比赛中赢得了冠军”牛世界小姐”。因此,贝西会参观N(2 < = N < = 50000)个农场来传播善意。世界将被表示成一个二维平面,每个农场位于一对整数坐标(x,y),各有一个值范围在-10000…10000。没有两个农场共享相同的一对坐标。

尽管贝西沿直线前往下一个农场,但牧场之间的距离可能很大,所以她需要一个手提箱保证在每一段旅程中她有足够吃的食物。她想确定她可能需要旅行的最大可能距离,她要知道她必须带的手提箱的大小。帮助贝西计算农场的最大距离。

输入输出格式

输入格式:

第一行:一个整数n

第2~n+1行:xi yi 表示n个农场中第i个的坐标

输出格式:

一行:最远距离的[b]平方[/b]

输入输出样例

输入样例#1:

4
0 0
0 1
1 1
1 0
输出样例#1:

2

说明

NONE

 
 
本来想练习一下旋转卡壳,
但是n^2的暴力居然A了。,,。。
既然A了,。。。
那就不写旋转卡壳23333333
 
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define vec point
using namespace std;
const double eps=1e-;
const int MAXN=;
int n;
void read(int &n)
{
char c='+';int x=;bool flag=;
while(c<''||c>''){c=getchar();if(c=='-')flag=;}
while(c>=''&&c<=''){x=x*+(c-);c=getchar();}
flag==?n=-x:n=x;
}
inline int dcmp(double x)
{
if(fabs(x)<eps) return ;
else return x>?:-;
}
struct point
{
double x,y;
inline point(double x=,double y=):x(x),y(y){};
}p[MAXN],ch[MAXN];
vec operator - (vec a,vec b) {return vec(a.x-b.x,a.y-b.y);}
vec operator + (vec a,vec b) {return vec(a.x+b.x,a.y+b.y);}
vec operator == (vec a,vec b){return (dcmp(a.x-b.x)==&&dcmp(a.y-b.y)==);}
int comp(const point &a,const point &b)
{
if(a.x==b.x) return a.y<b.y;
else return a.x<b.x;
}
int stack[MAXN];
double cross(vec a,vec b){return a.x*b.y-a.y*b.x;}
int convex_hull()
{
sort(p+,p+n+,comp);
int top=;
for(int i=;i<=n;i++)
{
while(top>&& dcmp(cross(ch[top-]-ch[top-], p[i]-ch[top-]))<=) top--;
ch[top++]=p[i];
}
int tmp=top+;
for(int i=n-;i>=;i--)
{
while(top+>tmp&& dcmp(cross(ch[top-]-ch[top-], p[i]-ch[top-]))<=) top--;
ch[top++]=p[i];
}
if(n>) top--;
return top;
}
int dis(point a,point b)
{
return ((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int main()
{
//freopen("fc.in","r",stdin);
//freopen("fc.out","w",stdout);
read(n);
//ios::sync_with_stdio(0);
for(int i=;i<=n;i++)
{
double a,b;
cin>>a>>b;
p[i]=point(a,b);
}
int num=convex_hull();
int ans=;
for(int i=;i<=num;i++)
for(int j=;j<=num;j++)
ans=max(ans,(int) dis(ch[i],ch[j])); printf("%d",ans);
return ;
}

最新文章

  1. InnoDB体系结构学习笔记
  2. MVC默认路由实现分页-PagerExtend.dll
  3. Python全栈开发【面向对象】
  4. Smokeping -- 监控网络质量
  5. 如何把excel 数据做dataprovide
  6. 操作系统开发系列—12.c.从Loader加载ELF内核,顺便解释下函数调用过程 ●
  7. ListView遍历每个Item出现NullPointerException的异常(转)
  8. [转]iOS/iphone开发如何为苹果开发者帐号APPID续费
  9. class的使用
  10. Node安装及搭建简单服务器
  11. 解决IOS下不支持fixed的问题
  12. 使用sklearn进行数据挖掘-房价预测(3)—绘制数据的分布
  13. 4.Handler之CoreHandler编写
  14. 最大的k个数问题
  15. 微服务实战(三):落地微服务架构到直销系统(构建基于RabbitMq的消息总线)
  16. vijos搭建踩坑
  17. [Abp 源码分析]十一、权限验证
  18. Spring之BeanFactory和FactoryBean接口的区别
  19. 杭电ACM2015--偶数求和
  20. 干了这杯Java之transient关键字

热门文章

  1. android全磁盘加密
  2. 【从零之六&amp;amp;完结】android口语对话系统(RavenClaw java版 含所有源代码)
  3. Linux文件系统(七)---系统调用之open操作(一)
  4. Android简单实现BroadCastReceiver广播机制
  5. ES正常停止步骤
  6. Kali linux 2016.2 的 plyload模块之meterpreter plyload详解
  7. 最长公共子序列(稀疏序列)nlogn解法
  8. AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
  9. PHP————系统常量
  10. RocketMQ学习笔记(2)----Broker的集群四种方式