Luogu 1452 Beauty Contest

  • 求平面最远点对,先求出凸包,再找凸包的直径.
  • 使用旋转卡壳,直径一定出现在对踵点对间.比较不同点到同一直线距离可以用叉积算三角形面积来比较.
  • 实现时注意关于栈的 \(top\) 的细节.
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define mp make_pair
  5. #define pii pair<int,int>
  6. inline int read()
  7. {
  8. int x=0;
  9. bool pos=1;
  10. char ch=getchar();
  11. for(;!isdigit(ch);ch=getchar())
  12. if(ch=='-')
  13. pos=0;
  14. for(;isdigit(ch);ch=getchar())
  15. x=x*10+ch-'0';
  16. return pos?x:-x;
  17. }
  18. const int MAXN=5e4+10;
  19. const double eps=1e-9;
  20. struct v2{
  21. ll x,y;
  22. v2(ll x=0,ll y=0):x(x),y(y) {}
  23. v2 operator + (const v2 &rhs) const
  24. {
  25. return v2(x+rhs.x,y+rhs.y);
  26. }
  27. v2 operator / (const double &rhs) const
  28. {
  29. return v2(x/rhs,y/rhs);
  30. }
  31. v2 operator - (const v2 &rhs) const
  32. {
  33. return v2(x-rhs.x,y-rhs.y);
  34. }
  35. ll operator * (const v2 &rhs) const
  36. {
  37. return x*rhs.y-y*rhs.x;
  38. }
  39. ll modulus2()
  40. {
  41. return x*x+y*y;
  42. }
  43. bool operator < (const v2 &rhs) const
  44. {
  45. return x==rhs.x?y<rhs.y:x<rhs.x;
  46. }
  47. };
  48. v2 origin;
  49. bool cmp(const v2 &a,const v2 &b)
  50. {
  51. double A=atan2(a.y-origin.y,a.x-origin.x),B=atan2(b.y-origin.y,b.x-origin.x);
  52. return A==B?a.x<b.x:A<B;
  53. }
  54. v2 stk[MAXN];
  55. int tp;
  56. void ConvexHull(v2 *p,int n)
  57. {
  58. for(int i=2;i<=n;++i)
  59. if(p[i]<p[1])
  60. swap(p[i],p[1]);//p1为左下角的点
  61. origin=p[1];
  62. sort(p+2,p+n+1,cmp);
  63. stk[tp]=p[1];//从0开始存
  64. for(int i=2;i<=n;++i)
  65. {
  66. while(tp>=2 && (stk[tp]-stk[tp-1])*(p[i]-stk[tp])<=0)
  67. --tp;
  68. stk[++tp]=p[i];
  69. }
  70. }
  71. ll RotatingCaliper()
  72. {
  73. if(tp==1)
  74. return (stk[0]-stk[1]).modulus2();
  75. stk[++tp]=stk[0];
  76. ll ans=0;
  77. int j=2;
  78. for(int i=0;i<tp;++i)
  79. {
  80. while(abs((stk[i]-stk[j])*(stk[i+1]-stk[j]))<abs((stk[i]-stk[j+1])*(stk[i+1]-stk[j+1])))
  81. j=(j+1)%tp;
  82. ans=max(ans,(stk[i]-stk[j]).modulus2());
  83. ans=max(ans,(stk[i+1]-stk[j]).modulus2());
  84. }
  85. return ans;
  86. }
  87. int n;
  88. v2 p[MAXN];
  89. int main()
  90. {
  91. // freopen("testdata.in","r",stdin);
  92. n=read();
  93. for(int i=1;i<=n;++i)
  94. scanf("%lld%lld",&p[i].x,&p[i].y);
  95. ConvexHull(p,n);
  96. ll ans=RotatingCaliper();
  97. printf("%lld\n",ans);
  98. return 0;
  99. }
  100. //785190749

Luogu 1452 Beauty Contest的更多相关文章

  1. poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)

    /* poj 2187 Beauty Contest 凸包:寻找每两点之间距离的最大值 这个最大值一定是在凸包的边缘上的! 求凸包的算法: Andrew算法! */ #include<iostr ...

  2. POJ2187 Beauty Contest

    Description Bessie, Farmer John's prize cow, has just won first place in a bovine beauty contest, ea ...

  3. 【POJ】2187 Beauty Contest(旋转卡壳)

    http://poj.org/problem?id=2187 显然直径在凸包上(黑书上有证明).(然后这题让我发现我之前好几次凸包的排序都错了QAQ只排序了x轴.....没有排序y轴.. 然后本题数据 ...

  4. poj 2187 Beauty Contest (凸包暴力求最远点对+旋转卡壳)

    链接:http://poj.org/problem?id=2187 Description Bessie, Farmer John's prize cow, has just won first pl ...

  5. poj 2187 Beauty Contest

    Beauty Contest 题意:给你一个数据范围在2~5e4范围内的横纵坐标在-1e4~1e4的点,问你任意两点之间的距离的最大值的平方等于多少? 一道卡壳凸包的模板题,也是第一次写计算几何的题, ...

  6. Beauty Contest(graham求凸包算法)

    Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 25256   Accepted: 7756 Description Bess ...

  7. poj2187 Beauty Contest(旋转卡壳)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Beauty Contest Time Limit: 3000MS   Memor ...

  8. POJ 2187 Beauty Contest 凸包

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 27276   Accepted: 8432 D ...

  9. POJ 2187: Beauty Contest(旋转卡)

    id=2187">Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 27218   ...

随机推荐

  1. R中去除为NA的行--转载

    下面用实例来说明这两个函数的作用: 这是一个数据框final: gene hsap mmul mmus rnor cfam 1 ENSG00000208234 0 NA NA NA NA 2 ENSG ...

  2. ubuntu mac terminal install software

    http-server // ubuntu sudo npm install http-server -g npm node.js yarn

  3. em和px的区别一次彻底搞清楚!

    在国内网站中,包括三大门户,以及“引领”中国网站设计潮流的蓝色理想,ChinaUI等都是使用了px作为字体单位.只有百度好歹做了个可调的表率.而 在大洋彼岸,几乎所有的主流站点都使用em作为字体单位, ...

  4. 交通部道路运输车辆卫星定位系统部标JTT808、809、796标准大全

    无论是开发GPS设备硬件还是开发应用软件,都要面临一个标准,这个标准就是国家交通部发布的道路运输车辆卫星定位系统部标认证标准,它涵盖了GPS硬件设备参数.功能标准,也包括了设备上传到应用平台的协议标准 ...

  5. bzoj 4627 值域线段树

    4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 523  Solved: 227[Submit][Sta ...

  6. Project facet Java 1.8 is not supported by target runtime Apache Tomcat v7.0.

    找到项目下的“.settings”

  7. oracle实例内存(SGA和PGA)调整-xin

    一.名词解释 (1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. ( ...

  8. 35-THREE.JS 多面体

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  9. java程序设计基础篇 复习笔记 第三单元

    1 单向if语句 双向if语句 dangling else switch:char,byte,short,int 2 javax.swing.JOptionPane.showConfirmDialog ...

  10. maven_01_简介及安装

    一.简介 Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息管理 何为构建 除了编写源代码,我们每天有相当一部分时间花在了编译.运行单元测试.生成文档.打包和部署等烦琐且不起眼的工作上 ...