判断两点间连通性,建图跑floyed

 #include<bits/stdc++.h>
using namespace std;
const int N=;
struct node
{
double z[],x;
}q[N];double e[N][N];
double dis(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
bool come(int i,int j,int a,int b)
{
if(j-i<)return ;
double x1=q[i].x,x2=q[j].x,y1=q[i].z[a],y2=q[j].z[b];if(x1==x2)return ;
double k=(y1-y2)/(x1-x2),bb=y1-x1*k;
for(i=i+;i<j;++i)
{
double y=q[i].x*k+bb;
if(y<q[i].z[]||(y>q[i].z[]&&y<q[i].z[])||y>q[i].z[])return ;
}
return ;
}
void add(int i,int j,int a,int b)
{
if(come(i,j,a,b))return;
e[i*+a][j*+b]=e[j*+b][i*+a]=dis(q[i].x,q[i].z[a],q[j].x,q[j].z[b]);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%lf",&q[i].x);
for(int j=;j<=;++j)scanf("%lf",&q[i].z[j]);
}
q[].x=;q[++n].x=;
for(int i=;i<=;++i)q[].z[i]=q[n].z[i]=;
for(int i=;i<=n*+;++i)for(int j=;j<=n*+;++j)e[i][j]=1e9; for(int i=;i<=n;++i)
for(int j=i+;j<=n;++j)
for(int a=;a<=;++a)
for(int b=;b<=;++b)
add(i,j,a,b);
for(int k=;k<=n*+;++k)
for(int i=;i<=n*+;++i)
for(int j=;j<=n*+;++j)
e[i][j]=min(e[i][j],e[i][k]+e[k][j]);
printf("%.2lf",e[][n*+]);
return ;
}

luoguP1354房间最短路问题的更多相关文章

  1. 【u026】房间最短路问题

    描述 在一个长宽均为10,入口出口分别为(0,5).(10,5)的房间里,有几堵墙,每堵墙上有两个缺口,求入口到出口的最短路经. 格式 输入格式 第一排为n(n<=20),墙的数目. 接下来n排 ...

  2. P1354 房间最短路问题

    传送门 可以发现,最短路一定要经过墙壁的断点. 那么把房间看作一个有向图,墙壁的断点为节点,求从起点到终点的最短路. 这道题的难点在于建图.枚举所有的断点,若可以走则加入这条边. 判断两点是否连通,即 ...

  3. luogu 1354 房间最短路问题 线段与直线相交 最短路

    题目链接 题目描述 在一个长宽均为10,入口出口分别为(0,5).(10,5)的房间里,有几堵墙,每堵墙上有两个缺口,求入口到出口的最短路经. 输入输出格式 输入格式: 第一排为n(n<=20) ...

  4. [Luogu P1354]房间最短路问题

    这是一道紫题,然而实际上我觉得也就蓝题难度甚至不到. and,这道题就是一道数学题,代码模拟计算过程. 求最短路嘛,肯定要考虑建图,只需要把中间的墙上每个口的边缘处的点作为图中的点就行.至于为什么,显 ...

  5. luogu P1354 房间最短路问题 计算几何_Floyd_线段交

    第一次写计算几何,还是很开心的吧(虽然题目好水qaq) 暴力枚举端点,暴力连边即可 用线段交判一下是否可行. Code: #include <cstdio> #include <al ...

  6. ACM/ICPC 之 DP解有规律的最短路问题(POJ3377)

    //POJ3377 //DP解法-解有规律的最短路问题 //Time:1157Ms Memory:12440K #include<iostream> #include<cstring ...

  7. ACM 房间安排

    房间安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间, ...

  8. 房间安排-nyoj168

    描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中国上海市举行.本次世博会也是由中国举办的首届世界博览会.上海世博会以“城市,让生活 ...

  9. 房间声学原理与Schroeder混响算法实现

    一.混响时间的计算与预测 所谓混响就是声音的直达声与反射声很紧凑的重合在一起时人耳所听到的声音,这个效果在语音的后期处理时特别有用.能产生混响最常见的场景就是房间内,尤其是空旷的房间中. 混响有直达声 ...

随机推荐

  1. 使用 jQuery 避免鼠标双击

    介绍 当用户双击DOM对象(例如按钮和链接等)时,对于用户交互一直是个麻烦的问题. 幸运的是, jQuery 提供了一个相当棒的解决方法. 那就是.one(). .one()这个方法是做什么的? 它附 ...

  2. 洛谷 Transformations 方块转换

    Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度 ...

  3. css3图片响应式布局

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. IDEA常见错误

    1. inspects a maven model for resolution problems 在添加Maven依赖的时候,报了inspects a maven model for resolut ...

  5. python设计模式之装饰器详解(三)

    python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ...

  6. Git和Github简单教程【转】

    转自:https://www.cnblogs.com/schaepher/p/5561193.html#clone 原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但 ...

  7. glom模块的使用(二)

    上次我们说到golm的简单应用这次我们继续带结构化数据的其他操作进行学习. Literal 用法:class glom.Literal(value) 这个方法的功能主要是添加自定义的键值. 例如: f ...

  8. eWebEditor复制粘贴图片时过滤域名

    1.找到form.js 路径:plugins/frame/scripts/form.js 这个方法: 2.替换这个方法 /** * 处理参数 */ Form.prototype.processReqP ...

  9. 11.Container With Most Water---两指针

    题目链接:https://leetcode.com/problems/container-with-most-water/description/ 题目大意:给出一串数组(a1, a2, a3, .. ...

  10. 26_Python的内置函数

    The Python interpreter has a number of functions and types built into it that are always available.P ...