题目链接

题意:给你n个点的坐标,n<=50000,求最远点对

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const int mod = 1000000007;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const int big=50000;
int max(int a,int b) {return a>b?a:b;};
int min(int a,int b) {return a<b?a:b;};
struct node{
int x, y;
}ne[50005];
bool cmp(node a,node b)
{
if(a.x!=b.x)
return a.x<b.x;
return a.y<b.y;
} int cross(node a,node b,node c)
{
return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
} int a[50005],m,k;
void tubao(int n)
{
sort(ne+1,ne+n+1,cmp);
m=0; for(int i=1;i<=n;i++)
{
while(m>=2&&cross(ne[a[m-1]],ne[a[m]],ne[i])<=0)
m--;
++m;
a[m]=i;
}
k=m;
for(int i=n-1;i>=1;i--)
{
while((m>=k+1)&&cross(ne[a[m-1]],ne[a[m]],ne[i])<=0)
m--;
++m;
a[m]=i;
}
} double dist(int i,int j)
{
return (ne[i].x-ne[j].x)*(ne[i].x-ne[j].x)
+(ne[i].y-ne[j].y)*(ne[i].y-ne[j].y);
} int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
scanf("%d %d",&ne[i].x,&ne[i].y);
tubao(n);
int maxn=0;
for(int i=1;i<=k;i++)
for(int j=k+1;j<=m;j++)
maxn=max(maxn,dist(a[i],a[j]));
//for(int i=1;i<=m;i++)
// cout<<"|||"<<a[i]<<endl;
printf("%d\n",maxn);
}
return 0;
}

  分析:模板

wa代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const int mod = 1000000007;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const int big=50000;
int max(int a,int b) {return a>b?a:b;};
int min(int a,int b) {return a<b?a:b;};
struct node{
int x, y;
}ne[50005];
bool cmp(node a,node b)
{
if(a.x!=b.x)
return a.x<b.x;
return a.y<b.y;
} int cross(node a,node b,node c)
{
return (b.x-a.x)*(c.y-b.y)-(c.x-b.x)*(b.y-a.y);
} int a[50005],m;
void tubao(int n)
{
sort(ne+1,ne+n+1,cmp);
m=0; for(int i=1;i<=n;i++)
{
if(m>2&&cross(ne[a[m-1]],ne[a[m]],ne[i])<0)
m--;
a[++m]=i;
} for(int i=n-1;i>=1;i--)
{
if(i<=(n-2)&&cross(ne[i],ne[a[m]],ne[a[m-1]])>0)
m--;
a[++m]=i;
}
} double dist(int i,int j)
{
return (ne[i].x-ne[j].x)*(ne[i].x-ne[j].x)
+(ne[i].y-ne[j].y)*(ne[i].y-ne[j].y);
} int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
scanf("%d %d",&ne[i].x,&ne[i].y);
tubao(n);
int maxn=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
if(i!=j)
maxn=max(maxn,dist(a[i],a[j]));
//for(int i=1;i<=m;i++)
// cout<<"|||"<<a[i]<<endl;
printf("%d\n",maxn);
}
return 0;
}

  

poj 2187 Beauty Contest 凸包模板+求最远点对的更多相关文章

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

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

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

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

  3. POJ 2187 Beauty Contest 凸包

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

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

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

  5. poj 2187 Beauty Contest , 旋转卡壳求凸包的直径的平方

    旋转卡壳求凸包的直径的平方 板子题 #include<cstdio> #include<vector> #include<cmath> #include<al ...

  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 (凸包暴力求最远点对+旋转卡壳)

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

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

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

  9. POJ 2187 Beauty Contest (求最远点对,凸包+旋转卡壳)

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 24283   Accepted: 7420 D ...

随机推荐

  1. Oracle-DDL 3- 触发器

    DDL-数据定义语句: 四.触发器 -- 触发器(trigger),与某些特定的操作绑定,当达到触发条件后会自动触发--主要用来将某些操作的过程记录下来,或者阻止某些非法的操作,保护数据 /*触发条件 ...

  2. ABC133F Small Products

    考虑 DP. 状态 令 $f[\ell][x]$ 表示长度为 $\ell$,首项不超过 $x$ 的序列的个数. 答案是 $f[K][N]$. 有递推 $f[\ell][x] = f[\ell][x - ...

  3. ASP.NET Core中使用EF Core(MySql)Database First

    ⒈创建数据库,在数据中执行以下脚本. CREATE DATABASE Blogging; USE Blogging; CREATE TABLE Blog ( BlogId int not null P ...

  4. HDU1251 统计难题(字典树|map

    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部分 ...

  5. python中的并发执行

    一. Gevent实例 import gevent import requests from gevent import monkey # socket发送请求以后就会进入等待状态,gevent更改了 ...

  6. centos7 安装vim

    刚安装的centos7一般只有vi可以用,vim是没有安装的,如果我们想使用的话,需要我们自己去安装,可以使用如下命令进行安装: yum -y install vim 安装之后就可以正常使用

  7. 07-django项目连接远程mysql数据库

    比如电脑a(ip地址为192.168.0.aaa)想要连接访问电脑b(ip地址为192.168.0.bbb)的数据库: 对电脑a(ip地址为192.168.0.aaa): 在项目settings.py ...

  8. scrapydWeb安装和使用

    1. 安装:pip install scrapydweb 2. 启动:scrapydweb 第一次执行,当前目录会生产配置文件:scrapydweb_settings_v8.py 配置账户和密码: # ...

  9. Vue中自定义指令的使用方法!

    除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的情况下,你仍然需要对普通 DOM ...

  10. dubbo-admin监控搭建2.6.0版本

    首先介绍一下dubbo的一个比较大的改变,那就是在2.6.1及2.6.1以后的版本当中,dubbo将一分为二,分为Dubbo-RPC和Dubbo-Admin,而在2.6.1以前的版本中Dubbo-Ad ...