洛谷 P1452 Beauty Contest
题目背景
此处省略1W字^ ^
题目描述
贝茜在牛的选美比赛中赢得了冠军”牛世界小姐”。因此,贝西会参观N(2 < = N < = 50000)个农场来传播善意。世界将被表示成一个二维平面,每个农场位于一对整数坐标(x,y),各有一个值范围在-10000…10000。没有两个农场共享相同的一对坐标。
尽管贝西沿直线前往下一个农场,但牧场之间的距离可能很大,所以她需要一个手提箱保证在每一段旅程中她有足够吃的食物。她想确定她可能需要旅行的最大可能距离,她要知道她必须带的手提箱的大小。帮助贝西计算农场的最大距离。
输入输出格式
输入格式:
第一行:一个整数n
第2~n+1行:xi yi 表示n个农场中第i个的坐标
输出格式:
一行:最远距离的[b]平方[/b]
输入输出样例
4
0 0
0 1
1 1
1 0
2
说明
NONE
旋转卡壳模板题,求个凸包之后用叉积求出离当期枚举直线的最远点(肯定是单调变化的)
/*
排序一定要严格按x第一关键字,y第二关键字升序排序,,,
不然后果就是WA一墙调半天不知道哪错的hhhh
*/
#include<bits/stdc++.h>
#define ll long long
#define maxn 50005
using namespace std;
const double eps=0.000000001; inline int zt(double x){
if(fabs(x)<=eps) return ;
return (x>?:-);
} inline double sq(double x){
return x*x;
} struct node{
double x,y; node operator +(const node& u)const{
return (node){x+u.x,y+u.y};
} node operator -(const node& u)const{
return (node){x-u.x,y-u.y};
} node operator *(const double& u)const{
return (node){x*u,y*u};
} bool operator <(const node& u)const{
return zt(x-u.x)?zt(x-u.x)<:zt(y-u.y)<;
}
}a[maxn],q[maxn],ret[maxn]; inline double ptmul(node x,node y){
return x.x*y.x+x.y*y.y;
} inline double Xmul(node x,node y){
return x.x*y.y-x.y*y.x;
} inline bool eq(node x,node y){
return (!zt(x.x-y.x)&&!zt(x.y-y.y));
} inline double dist(node x,node y){
return sq(x.x-y.x)+sq(x.y-y.y);
} inline int get_hill(node *u,int len){
sort(u+,u+len+); int tt=,tot=;
q[]=u[],q[]=u[];
for(int i=;i<=len;i++){
while(tt>&&zt(Xmul(q[tt]-q[tt-],u[i]-q[tt]))<) tt--;
q[++tt]=u[i];
}
for(int i=;i<=tt;i++) ret[++tot]=q[i]; tt=;
q[]=u[],q[]=u[];
for(int i=;i<=len;i++){
while(tt>&&zt(Xmul(q[tt]-q[tt-],u[i]-q[tt]))>) tt--;
q[++tt]=u[i];
}
int pre=tot;
for(int i=tt;i;i--) if(!eq(q[i],ret[])&&!eq(q[i],ret[pre])) ret[++tot]=q[i]; for(int i=;i<=tot;i++) u[i]=ret[i];
return tot;
} int n;
double ans=; inline void solve(){
node r=a[]-a[n];
int pt=,nxt=; while(zt(fabs(Xmul(r,a[nxt]-a[n]))-fabs(Xmul(r,a[pt]-a[n])))>){
pt=nxt,nxt++;
if(nxt>n) nxt-=n;
}
ans=max(ans,max(dist(a[],a[pt]),dist(a[n],a[pt]))); for(int i=;i<n;i++){
r=a[i+]-a[i];
while(zt(fabs(Xmul(r,a[nxt]-a[i]))-fabs(Xmul(r,a[pt]-a[i])))>){
pt=nxt,nxt++;
if(nxt>n) nxt-=n;
}
ans=max(ans,max(dist(a[i],a[pt]),dist(a[i+],a[pt])));
} } int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%lf%lf",&a[i].x,&a[i].y); n=get_hill(a,n); solve(); printf("%.0lf\n",ans);
return ;
}
洛谷 P1452 Beauty Contest的更多相关文章
- 洛谷 P1452 Beauty Contest 解题报告
P1452 Beauty Contest 题意 求平面\(n(\le 50000)\)个点的最远点对 收获了一堆计算几何的卡点.. 凸包如果不保留共线的点,在加入上凸壳时搞一个相对栈顶,以免把\(n\ ...
- [洛谷P1452]Beauty Contest
题目大意:给你$n$个点,求出其中最远点的距离 题解:求出凸包,最远点一定都在凸包上,可以对每条边求出最远的点(可以双指针),然后求出和这条边的端点的距离,更新答案 卡点:最开始对每个点求出最远点,但 ...
- 【洛谷 P1452】 Beauty Contest (二维凸包,旋转卡壳)
题目链接 旋转卡壳模板题把. 有时间再补总结吧. #include <cstdio> #include <cmath> #include <algorithm> u ...
- 洛谷P4645 [COCI2006-2007 Contest#7] BICIKLI [Tarjan,拓扑排序]
题目传送门 BICIKLI 题意翻译 给定一个有向图,n个点,m条边.请问,1号点到2号点有多少条路径?如果有无限多条,输出inf,如果有限,输出答案模10^9的余数. 两点之间可能有重边,需要看成是 ...
- P1452 Beauty Contest 旋转卡壳
\(\color{#0066ff}{题目描述}\) 贝茜在牛的选美比赛中赢得了冠军"牛世界小姐".因此,贝西会参观N(2 < = N < = 50000)个农场来传播善 ...
- P1452 Beauty Contest
传送门 求凸包周长,用旋转卡壳,具体可见yyb大佬的博客 顺便一提这题暴力+随机化也能过 暴力代码 //minamoto #include<bits/stdc++.h> #define r ...
- 洛谷P4891 序列 || 膜法阵,魔法阵
https://www.luogu.org/problemnew/show/P4891 一道几乎一样的题http://210.33.19.103/contest/1130/problem/3 题面ht ...
- Guard Duty (medium) Codeforces - 958E2 || (bzoj 2151||洛谷P1792) 种树 || 编译优化
https://codeforces.com/contest/958/problem/E2 首先求出N个时刻的N-1个间隔长度,问题就相当于在这些间隔中选K个数,相邻两个不能同时选,要求和最小 方法1 ...
- BZOJ 1901 洛谷 P2617 ZOJ 2112 Dynamic Rankings
以下时空限制来自zoj Time limit 10000 ms Memory limit 32768 kB OS Linux Source Online Contest of Christopher' ...
随机推荐
- 毕业答辩的PPT攻略
关于内容: 1.一般概括性内容:课题标题.答辩人.课题执行时间.课题指导教师.课题的归属.致谢等. 2.课题研究内容:研究目的.方案设计(流程图).运行过程.研究结果.创新性.应用价值.有关课题延续 ...
- java实现极简的LRU算法
import java.util.LinkedHashMap;import java.util.Map; /** * LRU (Least Recently Used) */public class ...
- hive对有特殊值null的数据倾斜处理
对有特殊值的数据倾斜处理 SET mapred.reduce.tasks=20;SET hive.map.aggr=TRUE;SET hive.groupby.skewindata=TRUE;SET ...
- Spring学习--切面优先级及重用切点表达式
指定切面的优先级: 在同一个链接点上应用不止一个切面时 , 除非明确指定 , 否则它们的优先级是不确定的. 切面的优先级可以通过实现 Ordered 接口或利用 @Order 注解指定. 实现 Ord ...
- LOJ 6057 - [HNOI2016]序列 加强版再加强版
Description 给定一个长度为 \(n\le 3*10^6\) 的序列 \(q\le 10^7\) 次询问每次求区间 \([l,r]\) 的所有子区间的最小值的和 询问随机 Solution ...
- bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑——倍增floyd
Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T < ...
- Windows XP SP1 Privilege Escalation
MS05-018 MS05-018 Works for Windows 2K SP3/4 | Windows XP SP1/2 Download ms05-018.exe: https://githu ...
- mongoDB的简单使用
1.客户端连接: ./mongo 2.数据库 一个mongodb中可以建立多个数据库. MongoDB的默认数据库为"db",该数据库存储在data目录中. MongoDB的单个实 ...
- 爆破phpmyadmin小脚本
#!usr/bin/env python #encoding: utf-8 #by i3ekr import requests headers = {'Content-Type':'applicati ...
- 人脸识别 - 环境搭建(Ubuntu 16.04)
安装人脸识别开源库(face_recognition) pip3 install face_recognition 注意:pip3 尝试编译 dlib 依赖时很可能会报错,参考:https://www ...