POJ2187:Beauty Contest(凸包 & 旋转卡壳)

【凸包】poj 2187 Beauty Contest (旋转卡壳求平面最远点对) 旋转卡壳算法原理讲解:点击打开链接 旋转卡壳算法的使用范围很广,我只学习了求平面最远点对的方法; 旋转卡壳求平面最远点对方法: 如果qa,qb是凸包上最远两点,必然可以分别过qa,qb画出一对平行线。通过旋转这对平行线,我们可以让它和凸包上的一条边重合,如图中蓝色直线,可以注意到,qa是凸包上离p和qb所在直线最远的点。 于是我们的思路就是枚举凸包上的所有边,对每一条边找出凸包上离 阅读详情

Beauty Contest
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 39350 Accepted: 12212

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) 

Source

题意:给一堆点,找出最远的点对距离。

思路:显然该点对在凸包上,那么先求出凸包。旋转卡壳的对踵点:如果过凸包上的两个点可以画一对平行直线,使凸包上的所有点都夹在两条平行线之间或落在平行线上,那么这两个点叫做一对对踵点,显然最远点对必然属于对踵点对集合,那么可以找出所有对踵点取距离最大那个,方法就是枚举每一条边a1-a2,找出ax,使得a1-a2-ax组成的三角形面积最大,这个可以通过叉积判断。又枚举的过程中面积的变化是一个凸函数,枚举下一条边时从ax开始就行了。凸包O(nlogn),旋转卡壳O(n)。

# include <iostream>
# include <cstdio>
# include <cmath>
# include <cstring>
# include <algorithm>
using namespace std;
const int maxn = 1e5+3;
int n;
struct node{double x, y;}a[maxn], ans[maxn];
inline node operator-(node a, node b)
{
    return node{a.x-b.x, a.y-b.y};
}
inline double operator*(node a, node b)
{
    return a.x*b.y - a.y*b.x;
}
inline double dis(node a)
{
    return a.x*a.x+a.y*a.y;
}
inline bool cmp(node x, node y)
{
    if(fabs((x-a[1])*(y-a[1]))>0) return (x-a[1])*(y-a[1])>0;
    return dis(x-a[1])<dis(y-a[1]);
}
inline double cha(node a, node b, node c)
{
    return fabs((a-b)*(a-c))/2;
}
int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; ++i) scanf("%lf%lf",&a[i].x,&a[i].y);
    for(int i=2;i<=n;i++)
        if(a[i].y<a[1].y||(a[i].y==a[1].y&&a[i].x<a[1].x))
            swap(a[1],a[i]);
    sort(a+2,a+n+1,cmp);
    int top=2;ans[1]=a[1];ans[2]=a[2];
    for(int i=3; i<=n; ++i)
    {
        while(top>1&&(a[i]-ans[top-1])*(ans[top]-ans[top-1])>=0) --top;
        ans[++top]=a[i];
    }
    for(int i=0;i<top;i++)
        ans[i] = ans[i+1];
    n=top;
    double imax = 0;
    for(int i=0,j=2;i<n;i++)
    {
        while(cha(ans[i],ans[(i+1)%n],ans[j]) < cha(ans[i],ans[(i+1)%n],ans[(j+1)%n])) j=(j+1)%n;
        imax = max(dis(ans[i]-ans[j]),imax);
    }
    printf("%.0f",imax);
    return 0;
}


用UltraISO制作镜像以RAW格式刻录系统到U盘后,在Windows上无法识别的解决办法 在这篇文章中,用UltraISO制作镜像后,会使得U盘无法识别!!!那么,如何抹掉U盘的数据,格式化U盘呢? 阅读详情

相关推荐

让 AI 学会“慢思考”:MCP Sequential Thinking 深度部署与使用指南

摘要: MCP Sequential Thinking 是一种让AI具备&quot;慢思考&quot;能力的技术,通过动态调整思维路径解决复杂问题。本文详细介绍了在Windows、macOS和Linux系统下的部署方法,包括环境准备、配置文件修改等步骤。该技术通过&quot;产生想法-评估需求-修正路径&quot;的循环机制,显著提升AI在代码设计、数学证明等复杂任务中的表现。文章还提供了验证安装方法、使用示例和常见问题解答,帮助开发者解锁AI的深层思考能力。(149字)

weixin_43236925的博客 1908

poj2187 Beauty Contest 凸包

DescriptionBessie, 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 a

xtulollipop 781

教你搞懂RT-Thread的移植和配置ENV工具环境

RT-Thread的移植和配置ENV工具环境

Troubadour~的博客 8263

pku 2187 Beauty Contest(凸包+卡壳旋转)

Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 23962   Accepted: 7316 Description Bessie, Farmer John's prize cow, has just won first place

街角的花街糖 699

Python爬虫之爬取并下载哔哩哔哩视频

它可以爬取并下载视频文件和音频文件!亲自使用过,太好用了。

2301_80124151的博客 3万+

【WRF-CMAQ实战指南】从环境配置到测试案例运行全解析

本文详细解析了WRF-CMAQ从环境配置到测试案例运行的全过程,包括系统环境检查、依赖库安装、源码获取与项目初始化、关键配置技巧、编译实战与排错、测试案例运行验证等关键步骤。通过实战指南,帮助用户快速掌握WRF-CMAQ的安装和运行技巧,提升空气质量模拟的效率。

year5的博客 244

【POJ 2187】Beauty Contest

算法标签:旋转卡壳

forever_dreams的博客 576

华为eNSP Pro实战:NE/CE设备SSH远程配置避坑指南

本文针对华为eNSP Pro用户在模拟多台NE路由器或CE交换机时遇到的浏览器卡顿问题,提供了详细的SSH远程配置避坑指南。通过对比浏览器与SSH客户端的资源占用和操作体验,文章详细阐述了为NE和CE设备配置SSH服务的关键步骤、命令差异及常见错误排查方法,旨在帮助用户提升实验效率,实现稳定高效的远程管理。

weixin_29196891的博客 223

POJ 2187 Beauty Contest (凸包&最远点距&旋转卡壳)

http://poj.org/problem?id=2187 思路:算出凸包后枚举凸包上的点。复杂度为O(NlogN+M) 为什么可以枚举? 设坐标的绝对值不超过M,则凸包至多有O(√M)个顶点 证明:以(0,0)为起点画出如下“极限凸包” (0,0)-(1,0)-(2,1)-(3,3)-(4,6)-...当x每次只增加1时,y增加速率是平方级的,所以凸包至多有O(√M)个顶

AC,∑ndless 1252

【K8S系列】在 Kubernetes 中使用 Prometheus 进行监控的详细指南

Prometheus 是一个开源的监控和报警工具,广泛用于 Kubernetes 环境中。本文将深入探讨如何通过 Kubernetes 中的注解配置 Prometheus 的抓取设置,以高效监控服务,并确保系统的可靠性和可维护性。

颜淡慕潇 2万+

PLC为西门子的S7-1200,舵机为 DS3218,PLC控制舵机旋转程序实现?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 999

【凸包直径&平面最远点对&对锺点(旋转卡壳)】poj 2187 Beauty Contest

poj 2187 Beauty Contesthttp://poj.org/problem?id=2187问题描述:平面点集上最远点对&凸包直径&对锺点首先构造凸包,遍历所有点与点距离,取最大值。这是利用了凸包上的点相比 点集中的点 一般是很少的 平均情况很好 并且我们也能AC这个问题但是这是有局限性的 当凸包上的点达到O(N)的级别时 凸包的优化作用就不存在了不过我们还要考虑到 凸包还起了对凸包上

Hacker_vision 684

2026年软件测试职业院校技能大赛—ERP管理平台-采购入库模块Bug定位与查找

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 195

Beauty Contest POJ - 2187 & P1452 Beauty Contest(平面凸包+旋转卡壳)

传送门 传送门 题解:使用平面凸包+旋转卡壳算法 平面凸包使用安德鲁算法:传送门 旋转卡壳:其实就是两个平行线正好把凸包卡住,其中卡着的点称为对踵点对.    很容易想象,某两个平行线对应的对踵点对最多只有四个。    那么怎么才能找到最远点对呢?        对于上图中的6个三角形的公共底边,可知当三角形的顶点在凸包上按逆时针旋转时,三角形的面积先由小变大再由大变小,即...

肘子的博客 372

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【计算几何】 Andrew凸包算法 + 旋转卡壳(以求点对最长距离为例) -- 以 POJ 2187 Beauty Contest 为例

Part One 求凸包 凸包的算法有很多种,我这里使用的是是Andrew那个凸包算法,就是先循环所有点求出下凸包,再逆向循环所有点定求出上凸包的那个算法。 时间复杂度为O(NlogN) 一个java的Applet演示算法执行过程 Monotone Chain Convex Hull 算法伪代码: 输入:一个在平面上的点集P 点集 P 按 先x后y 的递增排序 声明两个栈:U,L U -

生命有一种绝对 4151

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

POJ 2187 Beauty Contest(凸包优化 || 凸包+旋转卡壳)

http://poj.org/problem?id=2187 大意:求解点和点之间的最大距离的平方。 记得曾经有一道CF的题自己写了一个3重循环也过了,当时自己怀疑计算机一秒是运算10^9吗,还是数据太弱。。。写了一个1e9的程序,果断超时。看来1e8才是保险值 #include #include using namespace std; const int N=5e4+10; st

theArcticOcean 1072

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

POJ 2187 Beauty Contest(凸包+旋转卡壳)

转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents           by---cxlove 题目:求出凸包的最大直径。 http://poj.org/problem?id=2187 先对多边形求凸包,以前的知识不多说。 然后用旋转卡壳求出最大直径。 其实就是两条平行线夹出凸包,旋转。 如果pa,pb为最远

窝不是爱酱,喵~~~~ 1641

POJ 2187 Beauty Contest (凸包 旋转卡壳)

题目链接:POJ 2187 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 &...

G19850917的博客 235

POJ-2187-Beauty Contest(凸包+旋转卡壳板子)

题目链接:http://poj.org/problem?id=2187 题目大意:给出n个点,让你从中找出一对距离最大的点,输出(距离^2)。 思路:将这些点构成一个凸包,易得最大距离的点对在凸包上,因此我们对这个凸包进行旋转卡壳,然后维护最大值即可。 ACCode: //#pragma comment(linker, &quot;/STACK:1024000000,1024000000&quot;) ...

永远鲜红の幼月的博客 1355

POJ 2187 Beauty Contest

题目大意: 给n个点,求最远两点间距离的平方。 虽然这么写的,不要去枚举啊,枚举会超时的…… 解题思路: 1、先用Graham扫描法求一个最大凸包,(求凸包的方法也是今天刚学的) 2、再用旋转卡壳法求凸包两点间的最大距离。 下面是代码: #include #include struct node { int x,y; } point[50005],conh

脑残的孩子只有慢慢学。。 4647

poj 2187 Beauty Contest 经典题目:凸包+旋转卡壳

题目:http://poj.org/problem?id=2187 /*经典题目:凸包加旋转卡壳 凸包第一题, */ #include #include #include #include #include #include using namespace std; const int N = 50010; int n; struct P { int x, y;

弱智就要多努力 620

POJ 2187 Beauty Contest 构造凸包 + 旋转卡壳

在刷了一整版的 TLE 和 WA 外加一个CE和几个OLE之后终于拿到了第一个旋转卡壳的AC。。。泪奔 http://blog.youkuaiyun.com/ACMaker/archive/2008/10/29/3176910.asp http://cgm.cs.mcgill.ca/~orm/rotcal.frame.html 历史: 1978年, M.I. Shamo

自在飞花 1189

POJ 2187 Beauty Contest (旋转卡壳)

POJ 2187 Beauty Contest (旋转卡壳) 题意 给定二维平面nnn个点,求两点的最大距离。 思路 模板题,grahamgrahamgraham扫描+rotating&nbsp;calipersrotating\ calipersrotating&nbsp;calipers。 代码 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;algorithm&gt; #include&lt;cmath&gt; #includ

Harris-H的博客 546

POJ 2187 Beauty Contest (旋转卡壳法)

Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 33457   Accepted: 10367 Description Bessie, Farmer John's prize cow, has just won first place

MADE_Y 2017

POJ-2187-Beauty Contest凸包 —— 旋转卡壳

凸包 —— 旋转卡壳 POJ-2187-Beauty Contest 题意: 给 n 个顶点的坐标,求在这个图中,距离最远的两个点的 距离的平方 思路: 距离最远的点,肯定在凸包上,那么先求出凸包,然后直接枚举每两个点的距离(O(n^2)) 旋转卡壳优化: 先在凸包上找到一条边 A ,并找到距离这条边最远的点 a(最远的两点可能是 A 的某个端点和 a 的距离) ,当逆时针换边 B 的时候,距离...

HappyCode 328

POJ 2187 Beauty Contest 旋转卡壳

题目大意:求平面最远点对。 思路:我会说正解是求出凸包之后暴力?然后我闲的蛋疼去写了旋转卡壳。。 还在写极角序扫描法的不要再写了。。。赶紧换水平序吧。。。因为极角序需要解决两个特别不科学的问题。 问题1:第一次排序的时候极角相同的情况,这个时候要保留最外面的。 问题2:在最后得到的凸包上有三点共线的情况。有的时候并不会影响答案,但是有的时候就会,比如说旋转卡壳的时候。我的解决方法是

(╯°口°)╯(┴—┴ 870
上一篇: CodeChef:L-R queries(线段树 & set)
下一篇: CFgym:Glyph Recognition(计算几何)
junior19
博客等级 码龄10年 118粉丝 615原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值