原来这个念 旋转卡qia壳ke…

题意:求平面内给定点集里的最远点对,$n \leq 5e4$


做法就是旋转卡壳啦,话说这题数据范围应该可以再大挺多的。

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=50005;
struct Point
{
double x,y;
Point(double x=0,double y=0):x(x),y(y){}
}p[N];
inline Point operator -(Point a,Point b)
{
return Point(a.x-b.x,a.y-b.y);
}
inline double cross(Point a,Point b)
{
return a.x*b.y-a.y*b.x;
}
inline double sqr2(double x){return x*x;}
inline double dist(Point a,Point b)
{
return sqrt(sqr2(a.x-b.x)+sqr2(a.y-b.y));
}
inline bool cmp(Point a,Point b)
{
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
inline int convexHull(Point *s,int n)
{
sort(p+1,p+n+1,cmp);
int t=0,k;
for(register int i=1;i<=n;i++)
{
while(t>1&&cross(s[t]-s[t-1],p[i]-s[t-1])<=0)t--;
s[++t]=p[i];
}k=t;
for(register int i=n-1;i>=1;i--)
{
while(t>k&&cross(s[t]-s[t-1],p[i]-s[t-1])<=0)t--;
s[++t]=p[i];
}
if(n>1)t--;
return t;
}
inline double rotatingCalipers(Point *s,int t)
{
int now=2;double ans=0;
s[t+1]=s[1];
for(register int i=1;i<=t;i++)
{
while(cross(s[i+1]-s[i],s[now]-s[i])<cross(s[i+1]-s[i],s[now+1]-s[i]))
now=now%t+1;
ans=max(ans,dist(s[i],s[now]));
}
return ans;
}
int n,t;
int main()
{
Point s[N];scanf("%d",&n);
for(register int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);
t=convexHull(s,n);printf("%.0lf",sqr2(rotatingCalipers(s,t)));
return 0;
}

[日常摸鱼]POJ2187 BeautyContest-旋转卡壳的更多相关文章

  1. [POJ2187][BZOJ1069]旋转卡壳

    旋转卡壳 到现在依然不确定要怎么读... 以最远点对问题为例,枚举凸包上的两个点是最简单的想法,时间复杂度O(n2) 我们想象用两条平行线卡着这个凸包,当其中一个向某个方向旋转的时候另一个显然也是朝同 ...

  2. [日常摸鱼]bzoj3224普通平衡树-Treap、Splay、01Trie、替罪羊树…

    http://www.lydsy.com/JudgeOnline/problem.php?id=3224 经典的平衡树模板题-各种平衡树好像都可以(黄学长之前好像还用vector卡过了这题) 所以这篇 ...

  3. Hash 日常摸鱼笔记

    本篇文章是Hash在信息学竞赛中的应用的学习笔记,分多次更新(已经有很多坑了) 一维递推 首先是Rabin-Karp,对于一个长度为\(m\)的串\(S\) \(f(S)=\sum_{i=1}^{m} ...

  4. [日常摸鱼]HDU1724 Ellipse-自适应Simpson法

    模板题~ QAQ话说Simpson法的原理我还是不太懂-如果有懂的dalao麻烦告诉我~ 题意:每次给一个椭圆的标准方程,求夹在直线$x=l$和$x=r$之间的面积 Simpson法 (好像有时候也被 ...

  5. [日常摸鱼]bzoj1257余数之和

    题意:输入$k,n$,求$\sum_{i=1}^n k \mod i$ $k \mod i=k-i*\lfloor \frac{k}{i} \rfloor $,$n$个$k$直接求和,后面那个东西像比 ...

  6. [日常摸鱼]bzoj1001狼抓兔子-最大流最小割

    题意就是求最小割- 然后我们有这么一个定理(最大流-最小割定理 ): 任何一个网络图的最小割中边的容量之和等于图的最大流. (下面直接简称为最大流和最小割) 证明: 如果最大流>最小割,那把这些 ...

  7. [日常摸鱼]pojKaka's Matrix Travels-拆点+最大费最大流

    方格取数的升级版,每个格子最多取一次. $k=1$的话就是个普及组的dp题,$k=2$就是在之前的基础上多加两维. 然而现在$k$太大了当然就不dp啦 对于$k=1$的情况我们还可以把$(i,j)$向 ...

  8. [日常摸鱼]loj6000「网络流 24 题」搭配飞行员

    题面 应该是二分图匹配,不过我写的是网络最大流. dinic求二分图最大匹配:加个源点和汇点,源点连向二分图的一边所有点,二分图的另一边所有点连向汇点,很明显这样得到的最大流就是这个二分图的最大匹配. ...

  9. [日常摸鱼]poj1741Tree-点分治

    还有两天就要去FJWC啦- 题意:一颗无根树,$k$为给定常数,求树上距离不超过$k$的点对的数量,多组数据,$n \leq 10^4$. 应该是点分治经典题~ 一般对于无根树我们都可以把它转变成有根 ...

随机推荐

  1. Mac下载器Folx的标签功能怎么使用

    当大家使用Folx下载软件的时候,会发现,下载好的文件或者视频,会被Folx自动打上标签,进行归类,这其实就是Folx自带的智能标签功能,它能智能识别图片.视频.应用程序并分类.但很多时候,智能标签并 ...

  2. 解决Redis中数据不一致问题

    redis系列之数据库与缓存数据一致性解决方案 数据库与缓存读写模式策略写完数据库后是否需要马上更新缓存还是直接删除缓存? (1).如果写数据库的值与更新到缓存值是一样的,不需要经过任何的计算,可以马 ...

  3. iOS问题:pch not found

    问题描述: clang: error: no such file or directory: '/Users/apple/Desktop/迅点App_Mark/FaceHelp/FaceHelp-Pr ...

  4. php form表单提交时,action url中参数无效的解决方法

    表单提交时get方式的一个错误 <form class="form-inline pull-right" method="get" action=&quo ...

  5. 【模板】【P3402】可持久化并查集

    (题面来自洛谷) 题目描述 n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 ...

  6. 痞子衡嵌入式:一次利用IAR自带CRC完整性校验功能的实践(为KBOOT加BCA)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是利用IAR自带CRC完整性校验功能的一次实践(为KBOOT加BCA). 痞子衡之前写过两篇关于IAR中自带CRC校验功能的文章 < ...

  7. Codeforces Round #677 (Div. 3) E、G题解

    E. Two Round Dances #圆排列 题目链接 题意 \(n\)(保证偶数)个人,要表演一个节目,这个节目包含两种圆形舞蹈,而每种圆形舞蹈恰好需要\(n/2\)个人,每个人只能跳一种圆形舞 ...

  8. linux下安装python3.7.1

    一.安装依赖环境 输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readlin ...

  9. 【线程池】自己声明临时线程池一定要shutdown!

    场景: 某个定时任务需要多线程执行,执行时间较久且每天只跑一次,想单独拉出一个线程池和其他业务隔离开,交给spring会导致核心线程一直存在 浪费线程资源,因此想单独拉一个池子用完就丢,原本想的是,在 ...

  10. Linux下的MediaWiki的部署启动遇到的问题与解决方案

    1. MySQL安装不成功 解决方案:https://bbs.csdn.net/topics/394377536 2. no space left on device ubuntu 解决方案:http ...