思路:

旋转卡壳应用

注意点&边  边&边  点&点 三种情况

//By SiriusRen
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
const double eps=1e-;
const int N=;
typedef double db;
int n,m;
struct P{db x,y;P(){}P(db X,db Y){x=X,y=Y;}}p1[N],p2[N];
P operator-(P a,P b){return P(a.x-b.x,a.y-b.y);}
db operator*(P a,P b){return a.x*b.y-a.y*b.x;}
db operator^(P a,P b){return a.x*b.x+a.y*b.y;}
db dis(P c){return sqrt(c.x*c.x+c.y*c.y);}
db dotc(P a,P b,P c){return (b-a)^(c-a);}
db difc(P a,P b,P c){return (b-a)*(c-a);}
db p2seg(P a,P b,P c){
if(dotc(a,b,c)<-eps)return dis(a-c);
if(dotc(b,a,c)<-eps)return dis(b-c);
return abs(difc(a,b,c)/dis(a-b));
}
db seg2seg(P a,P b,P c,P d){
return min(min(p2seg(a,b,c),p2seg(a,b,d)),min(p2seg(c,d,a),p2seg(c,d,b)));
}
double solve(P p[],P q[],int np,int nq){
int sp=,sq=;
for(int i=;i<=np;i++)if(p[i].y<p[sp].y)sp=i;
for(int i=;i<=nq;i++)if(q[i].y>q[sq].y)sq=i;
p[np+]=p[],q[nq+]=q[];
double tmp,ans=1e9;
for(int i=;i<=np;i++){
while(tmp=(difc(p[sp+],q[sq+],p[sp])-difc(p[sp+],q[sq],p[sp]))>eps)sq=sq%nq+;
if(tmp<-eps)ans=min(ans,p2seg(p[sp],p[sp+],q[sq]));
else ans=min(ans,seg2seg(p[sp],p[sp+],q[sq],q[sq+]));
sp=sp%np+;
}return ans;
}
int main(){
while(scanf("%d%d",&n,&m)&&(n||m)){
for(int i=;i<=n;i++)scanf("%lf%lf",&p1[i].x,&p1[i].y);
for(int i=;i<=m;i++)scanf("%lf%lf",&p2[i].x,&p2[i].y);
printf("%lf\n",min(solve(p1,p2,n,m),solve(p2,p1,m,n)));
}
}

POJ 3608 旋转卡壳的更多相关文章

  1. poj 3608(旋转卡壳求解两凸包之间的最短距离)

    Bridge Across Islands Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9768   Accepted: ...

  2. Bridge Across Islands POJ - 3608 旋转卡壳求凸包最近距离

    \(\color{#0066ff}{题目描述}\) 几千年前,有一个小王国位于太平洋的中部.王国的领土由两个分离的岛屿组成.由于洋流的冲击,两个岛屿的形状都变成了凸多边形.王国的国王想建立一座桥来连接 ...

  3. poj 3608 旋转卡壳求不相交凸包最近距离;

    题目链接:http://poj.org/problem?id=3608 #include<cstdio> #include<cstring> #include<cmath ...

  4. Poj 2187 旋转卡壳

    Poj 2187 旋转卡壳求解 传送门 旋转卡壳,是利用凸包性质来求解凸包最长点对的线性算法,我们逐渐改变每一次方向,然后枚举出这个方向上的踵点对(最远点对),类似于用游标卡尺卡着凸包旋转一周,答案就 ...

  5. poj 2079(旋转卡壳求解凸包内最大三角形面积)

    Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 9060   Accepted: 2698 Descript ...

  6. POJ 2187 旋转卡壳 + 水平序 Graham 扫描算法 + 运算符重载

    水平序 Graham 扫描算法: 计算二维凸包的时候可以用到,Graham 扫描算法有水平序和极角序两种. 极角序算法能一次确定整个凸包, 但是计算极角需要用到三角函数,速度较慢,精度较差,特殊情况较 ...

  7. POJ 3608 Bridge Across Islands (旋转卡壳)

    [题目链接] http://poj.org/problem?id=3608 [题目大意] 求出两个凸包之间的最短距离 [题解] 我们先找到一个凸包的上顶点和一个凸包的下定点,以这两个点为起点向下一个点 ...

  8. POJ 3608 Bridge Across Islands --凸包间距离,旋转卡壳

    题意: 给你两个凸包,求其最短距离. 解法: POJ 我真的是弄不懂了,也不说一声点就是按顺时针给出的,不用调整点顺序. 还是说数据水了,没出乱给点或给逆时针点的数据呢..我直接默认顺时针给的点居然A ...

  9. POJ 3608 Bridge Across Islands(旋转卡壳,两凸包最短距离)

    Bridge Across Islands Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7202   Accepted:  ...

随机推荐

  1. [NOIP2006] 提高组 洛谷P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  2. 【HDOJ5713】K个联通块(状压DP,计数)

    题意:有一张无重边的无向图, 求有多少个边集,使得删掉边集里的边后,图里恰好有K个连通块. 1≤T≤201≤K≤N≤140≤M≤N∗(N+1)/21≤a,b≤N 思路:From http://blog ...

  3. 莫比乌斯反演套路二--(n/d)(m/d)给提出来--BZOJ3529: [Sdoi2014]数表

    一个数表上第i行第j列表示能同时整除i和j的自然数,Q<=2e4个询问,每次问表上1<=x<=n,1<=y<=m区域内所有<=a的数之和.n,m<=1e5,a ...

  4. vagrant的学习 之 LNMP和LAMP

    vagrant的学习 之 LNMP和LAMP 本文根据慕课网的视频教程练习,感谢慕课网! 慕课的参考文档地址:https://github.com/apanly/mooc/tree/master/va ...

  5. [bzoj1324]Exca王者之剑_最小割

    Exca王者之剑 bzoj-1324 题目大意:题目链接. 注释:略. 想法: 最小割经典模型. 所有格子向源点连权值为格子权值的边. 将棋盘黑白染色后白点反转源汇. 如果两个格子相邻那么黑点向白点连 ...

  6. 如何在其他js 引入main.js 中 vue 的实例?

    1.原因解析 经测试发现,代码先执行了 index.js >>  main.js >> Home.vue scr/api/index.js src/main.js src/co ...

  7. 【block第四篇】实现

    -------------------------------------------欢迎查看block连载博客[专栏]--------------------------------------[b ...

  8. vuex资料

    vuex最简单.最详细的入门文档 链接:https://segmentfault.com/a/1190000009404727 https://www.jb51.net/article/138239. ...

  9. 读书笔记:Information Architecture for the World Wide Web, 3rd Edition 北极熊 简介

    书籍介绍 Information Architecture for the World Wide Web, 3rd Edition<web信息架构:设计大型网站(第三版)> Designi ...

  10. mongodb由于目标计算机积极拒绝无法连接失败

    这不是mongodb无法启动,是你还没有启动mongodb就来连接使用它了,肯定是不成功的.安装完mongodb后先将bin目录在环境变量下写入path然后在bin同级目录下创建一个db文件夹接着运行 ...