1. /* poj 2187 Beauty Contest
  2. 凸包:寻找每两点之间距离的最大值
  3. 这个最大值一定是在凸包的边缘上的!
  4.  
  5. 求凸包的算法: Andrew算法!
  6. */
  7. #include<iostream>
  8. #include<cstdio>
  9. #include<cstring>
  10. #include<algorithm>
  11. using namespace std;
  12.  
  13. struct Point{
  14. Point(){}
  15. Point(int x, int y){
  16. this->x=x;
  17. this->y=y;
  18. }
  19. int x, y;
  20.  
  21. static int cross(Point a, Point b){
  22. return a.x*b.y - a.y*b.x;
  23. }
  24.  
  25. static int dist(Point a, Point b){
  26. return (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y);
  27. }
  28.  
  29. Point operator -(Point tmp){
  30. return Point(x-tmp.x, y-tmp.y);
  31. }
  32. };
  33.  
  34. bool cmp(Point a, Point b){
  35. if(a.x==b.x)
  36. return a.y<b.y;
  37. return a.x<b.x;
  38. }
  39.  
  40. Point p[];
  41. int ch[];
  42. int n;
  43.  
  44. int main(){
  45. int i;
  46. while(scanf("%d", &n)!=EOF){
  47. for(i=; i<n; ++i)
  48. scanf("%d%d", &p[i].x, &p[i].y);
  49. sort(p, p+n, cmp);
  50. int m=;
  51. //求下凸包, 如果某一个点不在线段之内,向量的叉积必定是<=0;
  52. for(i=; i<n; ++i){
  53. while(m> && Point::cross(p[ch[m-]]-p[ch[m-]], p[i]-p[ch[m-]])<=) m--;
  54. ch[m++]=i;
  55. }
  56. //为啥求上凸包的时候,坐标的从n-2开始:因为n-1点一定是在下凸包中的(因为它的横坐标最大,必然是包含其他节点的)
  57. int k=m;
  58. for(i=n-; i>=; --i){
  59. while(m>k && Point::cross(p[ch[m-]]-p[ch[m-]], p[i]-p[ch[m-]])<=) m--;
  60. ch[m++]=i;
  61. }
  62. --m;
  63. int maxD=-, j, d;
  64. for(i=; i<m; ++i)
  65. for(j=i+; j<=m; ++j)
  66. if(maxD < (d=Point::dist(p[ch[i]], p[ch[j]])))
  67. maxD=d;
  68. printf("%d\n", maxD);
  69. }
  70. return ;
  71. }

poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)的更多相关文章

  1. POJ 2187 - Beauty Contest - [凸包+旋转卡壳法][凸包的直径]

    题目链接:http://poj.org/problem?id=2187 Time Limit: 3000MS Memory Limit: 65536K Description Bessie, Farm ...

  2. POJ 2187 Beauty Contest 凸包

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

  3. POJ 2187 Beauty Contest [凸包 旋转卡壳]

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 36113   Accepted: 11204 ...

  4. poj 2187 Beauty Contest 凸包模板+求最远点对

    题目链接 题意:给你n个点的坐标,n<=50000,求最远点对 #include <iostream> #include <cstdio> #include <cs ...

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

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

  6. POJ 2187 Beauty Contest【旋转卡壳求凸包直径】

    链接: http://poj.org/problem?id=2187 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...

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

    题面 Bessie, Farmer John's prize cow, has just won first place in a bovine beauty contest, earning the ...

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

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

  9. poj 2187:Beauty Contest(计算几何,求凸包,最远点对)

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 26180   Accepted: 8081 D ...

随机推荐

  1. 甲乙(数理逻辑)转自http://www.cnblogs.com/devymex/p/3329635.html

    这是一道历史悠久,又很困难的面试题. 你在旁观主持人和甲.乙两个天才数学家玩猜数字游戏.主持人准备了两个数,告知甲乙:这两个数不同,且大于等于1,小于等于30.然后主持人将两数之积告诉甲,把两数之和告 ...

  2. Main()

    P25 “每一个c#可执行文件都必须有一个入口——Main()方法” 我一直对这个Main()方法有一些疑问. 那就是这里头的参数. 在JAVA里,main(String args[])中的参数是绝对 ...

  3. 使用UG UISTYLER 窗体编辑器,创建对话框 part 1

    在UG 二次开发中,经常需要一些交互的输入,参数的更改啊,零件的选取什么的,UG 自身提供了创建这一类对话框的功能.当然也可以使用MFC或winForm 作为交互.但使用自带的比较快和简洁,风格也统一 ...

  4. [后端人员耍前端系列]KnockoutJs篇:快速掌握KnockoutJs

    一.引言 之前这个系列文章已经介绍Bootstrap.由于最近项目中,前端是Asp.net MVC + KnockoutJs + Bootstrap来做的.所以我又重新开始写这个系列.今天就让我们来看 ...

  5. Hadoop日记Day17---计数器、map规约、分区学习

    一.Hadoop计数器 1.1 什么是Hadoop计数器 Haoop是处理大数据的,不适合处理小数据,有些大数据问题是小数据程序是处理不了的,他是一个高延迟的任务,有时处理一个大数据需要花费好几个小时 ...

  6. SQL调优之降龙十八掌系列

    降龙十八掌是金庸小说的武功,招式名称取自<周易>,丐帮的镇帮绝学. 数据库性能优化是一门博大精深的学问.是一个大课题.本系列算是对数据库性能优化的一个总结,算是为2013年 划下一个句号. ...

  7. .net开发笔记(十三) Winform常用开发模式第一篇

    上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了“异步编程”这个概念,前前后后所有 ...

  8. Wix 安装部署教程(九) --用WPF做安装界面

    经常安装PC端的应用,特别是重装系统之后,大致分为两类.一类像QQ,搜狗输入法这样的.分三步走的:第一个页面可以自定义安装路径和软件许可.第二个页面显示安装进度条,第三个页面推荐其他应用.先不管人家怎 ...

  9. [异常解决] MPU6050启动异常读出陀螺仪和加速度计的值全为0的解决办法

    在调试一个自己做的手环,每次用keil烧写好程序运行的蓝牙.陀螺仪都是正常的.但是掉电再上电之后蓝牙是好的.陀螺仪可以读出ID但是读出的加速度和角速度数据全为0. 下面是发生问题时main函数的前面部 ...

  10. 如何在施工物料管理Web系统中处理大量数据并显示

    最近在开发施工物料管理系统,其中涉及大量的物料信息需要管理和汇总,数据量非常庞大.之前尝试自己通过将原始数据,加工处理建模,在后台代码中通过分组.转置再显示到 Web 页面中,但自己编写的代码量非常大 ...