P1452 Beauty Contes
时间:2022-05-08
本文章向大家介绍P1452 Beauty Contes,主要内容包括题目背景、题目描述、输入输出格式、输入输出样例、说明、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
题目背景
此处省略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
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<algorithm>
6 #define vec point
7 using namespace std;
8 const double eps=1e-8;
9 const int MAXN=50001;
10 int n;
11 void read(int &n)
12 {
13 char c='+';int x=0;bool flag=0;
14 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}
15 while(c>='0'&&c<='9'){x=x*10+(c-48);c=getchar();}
16 flag==1?n=-x:n=x;
17 }
18 inline int dcmp(double x)
19 {
20 if(fabs(x)<eps) return 0;
21 else return x>0?1:-1;
22 }
23 struct point
24 {
25 double x,y;
26 inline point(double x=0,double y=0):x(x),y(y){};
27 }p[MAXN],ch[MAXN];
28 vec operator - (vec a,vec b) {return vec(a.x-b.x,a.y-b.y);}
29 vec operator + (vec a,vec b) {return vec(a.x+b.x,a.y+b.y);}
30 vec operator == (vec a,vec b){return (dcmp(a.x-b.x)==0&&dcmp(a.y-b.y)==0);}
31 int comp(const point &a,const point &b)
32 {
33 if(a.x==b.x) return a.y<b.y;
34 else return a.x<b.x;
35 }
36 int stack[MAXN];
37 double cross(vec a,vec b){return a.x*b.y-a.y*b.x;}
38 int convex_hull()
39 {
40 sort(p+1,p+n+1,comp);
41 int top=1;
42 for(int i=1;i<=n;i++)
43 {
44 while(top>2&& dcmp(cross(ch[top-1]-ch[top-2], p[i]-ch[top-2]))<=0) top--;
45 ch[top++]=p[i];
46 }
47 int tmp=top+1;
48 for(int i=n-1;i>=1;i--)
49 {
50 while(top+1>tmp&& dcmp(cross(ch[top-1]-ch[top-2], p[i]-ch[top-2]))<=0) top--;
51 ch[top++]=p[i];
52 }
53 if(n>2) top--;
54 return top;
55 }
56 int dis(point a,point b)
57 {
58 return ((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
59 }
60 int main()
61 {
62 //freopen("fc.in","r",stdin);
63 //freopen("fc.out","w",stdout);
64 read(n);
65 //ios::sync_with_stdio(0);
66 for(int i=1;i<=n;i++)
67 {
68 double a,b;
69 cin>>a>>b;
70 p[i]=point(a,b);
71 }
72 int num=convex_hull();
73 int ans=0;
74 for(int i=1;i<=num;i++)
75 for(int j=1;j<=num;j++)
76 ans=max(ans,(int) dis(ch[i],ch[j]));
77
78 printf("%d",ans);
79 return 0;
80 }
- 跟着柴毛毛学Spring(2)——Bean的配置
- C++ 使用STL string 实现的split,trim,replace-修订
- 跟着柴毛毛学Spring(1)——纵观Spring
- MYSQL常用SQL汇总
- Linux 下设置SVN DIFF
- 剑指 offer代码解析——面试题38数字在排序数组中出现的次数
- 剑指 offer代码解析——面试题37两个链表的第一个公共结点
- 剑指 offer代码解析——面试题34丑数
- 剑指 offer代码解析——面试题35第一个只出现一次的字符
- Python内置数据结构之集合
- 剑指 offer代码解析——面试题32统计1到n中1出现的次数
- 剑指 offer代码解析——面试题26复杂链表的复制
- Linux软件安装(二)——RPM与YUM
- linux软件安装(一)——源码安装
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 企业运维经典面试题汇总(4)
- 使用QEMU模拟树莓派Raspberry Pi
- Octave梯度下降法最优化代价函数的一个例子—ML Note 38
- Spring Boot入门系列(十八)mybatis 使用注解实现增删改查,无需xml文件!
- Mongodb多键索引之嵌套文档
- MySQL中的这几类日志,你一定要知道
- 微服务技术栈:API网关中心,落地实现方案
- 你的数据库服务器IO调度算法不对,难怪那么慢
- Android 11 强制用户使用系统相机?
- LeetCode题目38:外观数列
- GPUManager虚拟化方案
- [网络安全] 二.Web渗透信息收集之域名、端口、服务、指纹、旁站、CDN和敏感信息
- 程序员进阶系列:你真的懂 HelloWorld 吗?
- 零基础Python教程040期 序列分片技术
- JS实现图片弹窗效果