博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2187 Beauty Contest
阅读量:5318 次
发布时间:2019-06-14

本文共 2885 字,大约阅读时间需要 9 分钟。

Description

Bessie, Farmer John’s prize cow, has just won first place in a bovine beauty contest, earning the title ‘Miss Cow World’. As a result, Bessie will make a tour of N (2 <= N <= 50,000) farms around the world in order to spread goodwill between farmers and their cows. For simplicity, the world will be represented as a two-dimensional plane, where each farm is located at a pair of integer coordinates (x,y), each having a value in the range -10,000 … 10,000. No two farms share the same pair of coordinates.

Even though Bessie travels directly in a straight line between pairs of farms, the distance between some farms can be quite large, so she wants to bring a suitcase full of hay with her so she has enough food to eat on each leg of her journey. Since Bessie refills her suitcase at every farm she visits, she wants to determine the maximum possible distance she might need to travel so she knows the size of suitcase she must bring.Help Bessie by computing the maximum distance among all pairs of farms.

Input

  • Line 1: A single integer, N

  • Lines 2..N+1: Two space-separated integers x and y specifying coordinate of each farm

Output

  • Line 1: A single integer that is the squared distance between the pair of farms that are farthest apart from each other.

Sample Input

4
0 0
0 1
1 1
1 0

Sample Output

2

Hint

Farm 1 (0, 0) and farm 3 (1, 1) have the longest distance (square root of 2)

分析:凸包

tip

在计算TUB的时候,时刻注意精度(只要有小数比较,就一定要用dcmp)

这道题可以用旋转卡壳,但是因为点不多,

所以n^2枚举也是可以的

旋转卡壳我会专门学习介绍的

这里写代码片#include
#include
#include
#include
#include
using namespace std;const double eps=1e-8;const int N=50010;struct node{ double x,y; node (double xx=0,double yy=0) { x=xx;y=yy; }};node po[N];int n,sta[N],top=0;node operator +(const node &a,const node &b){
return node(a.x+b.x,a.y+b.y);}node operator -(const node &a,const node &b){
return node(a.x-b.x,a.y-b.y);}node operator *(const node &a,const double &b){
return node(a.x*b,a.y*b);}node operator /(const node &a,const double &b){
return node(a.x/b,a.y/b);}int dcmp(double x){ if (fabs(x)
0) return 1; else return -1;}int cmp(const node &a,const node &b){ if (dcmp(a.x-b.x)!=0) return a.x
1&&dcmp(Cross(po[i]-po[sta[top-1]],po[sta[top]]-po[sta[top-1]]))<=0) top--; //上 sta[++top]=i; } int k=top; for (int i=n-1;i>=1;i--) { while (top>k&&dcmp(Cross(po[i]-po[sta[top-1]],po[sta[top]]-po[sta[top-1]]))<=0) top--; sta[++top]=i; } if (n>1) top--; //n>1}int ds(node x,node y){ int xx=(int)(x.x-y.x)*(x.x-y.x); int yy=(int)(x.y-y.y)*(x.y-y.y); return (int)(x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y);}int main(){ while (scanf("%d",&n)!=EOF) { for (int i=1;i<=n;i++) scanf("%lf%lf",&po[i].x,&po[i].y); TuB(); int ans=0; for (int i=1;i

转载于:https://www.cnblogs.com/wutongtong3117/p/7673431.html

你可能感兴趣的文章
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
查看>>
jenkins搭建
查看>>
C#中使用Split分隔字符串的技巧
查看>>
加固linux
查看>>
IPSP问题
查看>>
10.17动手动脑
查看>>
WPF中Image显示本地图片
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
面对问题,如何去分析?(日报问题)
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>
Java多线程基础(一)
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
初始面向对象
查看>>
leetcode Letter Combinations of a Phone Number
查看>>
Unity 5.4 测试版本新特性---因吹丝停
查看>>
7.5 文件操作
查看>>
MyEclipse中将普通Java项目convert(转化)为Maven项目
查看>>