POJ 2187 Beauty Contest

 旋转卡壳求最远点对;

#include<iostream>
#include<cmath>
using namespace std;
int n,k;
double dt;
typedef struct point
{double x,y;point(double xx=0,double yy=0):x(xx),y(yy){}
}vector;
point p[50010],q[50010];
struct line
{vector v;
}li,lj;
void sort1(point *a,int x,int y,point *t)
{int m,u,v,i;if(y-x>1){m=x+(y-x)/2;u=x,v=m,i=x;sort1(a,x,m,t);sort1(a,m,y,t);while(u<m || v<y){if(v>=y || (u<m && (a[u].x<a[v].x || (a[u].x==a[v].x && a[u].y<=a[v].y)))) t[i++]=a[u++];else t[i++]=a[v++];}for(i=x;i<y;i++) a[i]=t[i];}
}
vector operator - (point a,point b) {return vector(a.x-b.x,a.y-b.y);}
double cross(vector a,vector b)
{return a.x*b.y-a.y*b.x;
}
int convex(point *a,point *t)
{int m=0,i;for(i=0;i<n;i++){while(m>1 && cross(t[m-1]-t[m-2],a[i]-t[m-2])<=0) m--;t[m++]=a[i];}k=m;for(i=n-1;i>=0;i--){while(m>k && cross(t[m-1]-t[m-2],a[i]-t[m-2])<=0) m--;t[m++]=a[i];}if(n>1) m--;return m;
}
vector rotate(vector a,double rad)
{return vector(a.x*cos(rad)-a.y*sin(rad),a.x*sin(rad)+a.y*cos(rad));
}
double dot(vector a,vector b)
{return a.x*b.x+a.y*b.y;
}
double length(vector a)
{return sqrt(dot(a,a));
}
double angle(vector a,vector b)
{return acos(dot(a,b)/length(a)/length(b));
}
void f(int m,double &dt)
{int i=0,j=k-1;double th1,th2,d;while(i!=k-1 || j!=m){th1=angle(li.v,q[i+1]-q[i]);th2=angle(lj.v,q[(j+1)%m]-q[j]);if(th1<th2){li.v=rotate(li.v,th1);lj.v=rotate(lj.v,th1);i++;d=dot(q[j]-q[i],q[j]-q[i]);if(d>dt) dt=d;}else if(th1>th2){li.v=rotate(li.v,th2);lj.v=rotate(lj.v,th2);j++;d=dot(q[j%m]-q[i],q[j%m]-q[i]);if(d>dt) dt=d;}else{li.v=rotate(li.v,th1);lj.v=rotate(lj.v,th2);d=dot(q[j]-q[i+1],q[j]-q[i+1]);if(d>dt) dt=d;d=dot(q[(j+1)%m]-q[i],q[(j+1)%m]-q[i]);if(d>dt) dt=d;i++;j++;d=dot(q[j%m]-q[i],q[j%m]-q[i]);if(d>dt) dt=d;}}
}
int main()
{int i,m;cin>>n;for(i=0;i<n;i++)cin>>p[i].x>>p[i].y;sort1(p,0,n,q);m=convex(p,q);li.v=vector(0,-1);lj.v=vector(0,1);dt=dot(q[k-1]-q[0],q[k-1]-q[0]);f(m,dt);cout<<(int)dt<<endl;return 0;
}


转载于:https://www.cnblogs.com/java20130726/archive/2013/06/05/3218235.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解并行编程-分割和同步设计(四)

原文链接 作者&#xff1a;paul 译者&#xff1a;谢宝友&#xff0c;鲁阳&#xff0c;陈渝 图1.1&#xff1a;设计模式与锁粒度 图1.1是不同程度同步粒度的图形表示。每一种同步粒度都用一节内容来描述。下面几节主要关注锁&#xff0c;不过其他几种同步方式也有类似的粒…

XHTML标签的嵌套规则

XHTML 的标签有许多&#xff1a;div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、span、 strong……我们在运用这些标签搭建页面结构的时候&#xff0c;是可以将它们无限嵌套的&#xff0c;但是&#xff0c;嵌套也需要有一定规则&#xff0c;不能任由网站设计师的个人习惯胡乱…

python爬虫实现网页采集器

import requests #导入requests模块 #UA&#xff1a;User-Agnet:请求载体身份标识 #UA检测&#xff1a;各大门户网站的服务器都会检测请求载体的身份标识&#xff0c;如果请求载体的身份标识为某一款服务器&#xff0c; #则该请求为正常请求&#xff0c;如果请求载体的身份标识…

mongodb备份oplog_MongoDB 备份(mongodump)与恢复(mongorestore)

MongoDB 备份(mongodump)与恢复(mongorestore)MongoDB数据备份在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。mongodump命令可以通过参数指定导出的数据量级转存的服务器。语法mongodump命令脚本语法如下&#xff1a;>mongodump…

[转]MVC中如何使用RDLC报表

本文转自&#xff1a;http://www.cnblogs.com/BlueWoods/archive/2009/04/27/1444311.html 在用MVC开发项目的时候遇到了一个问题&#xff0c;如何运用RDLC报表&#xff1f; 首先想到的是在Controller返回DataSet,然后在View绑定值&#xff0c;但是遇到一个异常&#xff1a;...…

关于javascript作用域

今天一个挚友给我出了道javascript笔试题&#xff0c;代码如下&#xff1a; function test(){var a b 2; } test(); alert(b); alert(a);我看到这段代码&#xff0c;我笑了&#xff0c;很自信的回答道&#xff0c;会报错&#xff0c;因为a,b都是局部变量&#xff0c;所以a an…

string类的实现(构造函数,析构函数,运算符重载)

String类的代码&#xff1a;class String { public:String(char* str""){_str new char[strlen(str) 1];strcpy(_str, str);}String(const String& str){_str new char[strlen(str._str) 1];strcpy(_str, str._str);}~String(){delete[] _str;}String& o…

html网页设计一个简单的用户登录页面

结果 代码 login.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>用户登录页面</title><link rel"stylesheet" href"./css/login.css"><script src"j…

python url模块介绍_python 中 urlparse 模块介绍

urlparse模块主要是用于解析url中的参数 对url按照一定格式进行 拆分或拼接1.urlparse.urlparse将url分为6个部分&#xff0c;返回一个包含6个字符串项目的元组&#xff1a;协议、位置、路径、参数、查询、片段。import urlparseurl_change urlparse.urlparse(https://i.cnbl…

欢迎光临CAX软件二次开发开源社区!

欢迎光临CAX软件二次开发开源社区&#xff01; http://uucax.uueasy.com转载于:https://www.cnblogs.com/uucax/archive/2011/02/20/1959265.html

ORA-20446: The owner of the job is not registered ORA-06512: at SYSMAN.MGMT

Login as sysman user to the database and execute the following :execute MGMT_USER.MAKE_EM_USER(ARCER);//标红处为需要导出导入权限的用户的用户名 备注:假如你没有开启SYSMAN用户&#xff0c;自行开启&#xff1b;转载于:https://www.cnblogs.com/arcer/archive/2013/06…

ip聚合简介

练习一 本题选择&#xff1a;D 解释如下&#xff1a; 人事部 205.67.159.1110 0000 /27 培训部 205.67.159.1101 0000 /28 销售部 205.67.159.1100 0000 /28 先是培训部与销售部做IP聚合&#xff08;只有网络前缀位数相同才可以做ip聚合&#xff09; 保留相同的位数&…

css编写的技巧效果总结

1. 垂直对齐 如果你之前遇到过这个问题&#xff0c;你就应该知道它是多么的烦人&#xff0c;幸运的是&#xff0c;现在你可以使用CSS3变换来解决这个问题&#xff1a; .vc{ position: relative; top: 50%; -webkit-transform: translateY(-50%); -o-transform: translateY(-50%…

微信公众平台消息接口开发(34)桃花运测试

微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 桃花运 作者&#xff1a;方倍工作室 原文&#xff1a;http://www.cnblogs.com/txw1958/archive/2013/06/06/weixin-if34-peach-blossom-luck.html 桃花运&#xff0c;一般指得到异性缘的运气。而这种运气又常常蕴涵在…

sharepoint 2013 个人站点母版

最近做了个项目&#xff0c;&#xff0c;sharepoint 个人站点要求定制&#xff0c;&#xff0c;搞了好久不知引用的模板 在何位置&#xff0c;查了好多资料还是没有办法解决&#xff0c;&#xff0c;经过不懈的努力&#xff0c;终于找到了&#xff0c;现在记录下&#xff0c;做…

telnet不是内部或外部命令解决方法

在使用window系统在使用telnet命令时&#xff0c;会出现“telnet不是内部或外部命令”的错误。 这是因为windows默认没有开启telnet client 开启window的telnet客户端功能&#xff0c;命令就可以使用了。 1.打开控制面板 2.选择程序 3.选择启用或关闭windows功能 4.将telnet…

java文件读写操作指定编码格式[转]

读文件&#xff1a; BufferedReader 从字符输入流中读取文本&#xff0c;缓冲各个字符&#xff0c;从而提供字符、数组和行的高效读取。 可以指定缓冲区的大小&#xff0c;或者可使用默认的大小。大多数情况下&#xff0c;默认值就足够大了。 通常&#xff0c;Reader 所作的每个…

bean覆盖 springboot_SpringBoot中如何进行Bean配置

在控制器MessageController中注入IMessageService&#xff1a;package com.gwolf.controller;import ch.qos.logback.core.net.SyslogOutputStream;import com.gwolf.service.IMessageService;import com.gwolf.util.controller.AbstractBaseController;import org.springframe…

C# 自定义箭头组件

C#自定义箭头组件&#xff0c;效果如图&#xff1a; 实现的功能&#xff1a; 1&#xff09; 箭头方向属性左、右、上、下&#xff1b; 2&#xff09; 颜色渐变&#xff0c;且颜色任意调整&#xff1b; 3&#xff09; 箭头大小位置任意调整&#xff1b; 4&#xff09; 其他。 主…

Android的debug.keystore拒绝访问导致的生成异常及解决方案

为什么80%的码农都做不了架构师&#xff1f;>>> 构建Android应用程序的时候输出异常:[apkbuilder] keytool 错误: java.io.FileNotFoundException: C:\Users\my\.android\debug.keystore(拒绝访问.) 导致BUILD FAILED. ##异常原因: Android要求所有的应用程序必须有…