判断两点间连通性,建图跑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. 【BZOJ做题记录】07.07~?

    在NOI一周前重开一个坑 最后更新时间:7.08 07:38 7.06 下午做的几道CQOI题: BZOJ1257: [CQOI2007]余数之和sum:把k mod i写成k-k/i*i然后分段求后 ...

  2. laravel判断是否post传输

    可以用post传输判断form表单是否有值post传过来: if($request->isMethod('post')){ // 要执行的代码 }通过 Request 对象的 isMethod ...

  3. Spring Cloud全家桶主要组件及简要介绍

    一.微服务简介 微服务是最近的一两年的时间里是很火的一个概念.感觉不学习一下都快跟不上时代的步伐了,下边做一下简单的总结和介绍. 何为微服务?简而言之,微服务架构风格这种开发方法,是以开发一组小型服务 ...

  4. HDU 2593 Pirates’ Code (STL容器)

    题目链接 Problem Description Davy Jones has captured another ship and is smiling contently under the sun ...

  5. bzoj 3083 树链剖分

    首先我们先将树提出一个根变成有根树,那么我们可以通过树链剖分来实现对于子树的最小值求解,那么按照当前的根和询问的点的相对位置关系我们可以将询问变成某个子树和或者除去某颗子树之后其余的和,前者直接询问区 ...

  6. JSON与JS的区别以及转换

    JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串,又如何把JSON字符串转化为JavaScript对象? JSON (JavaScript Obje ...

  7. Vuex-Mutation

    更改 Vuex 的 store 中的状态的唯一方法是提交 mutation.Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 ...

  8. 大数据系列之Flume+kafka 整合

    相关文章: 大数据系列之Kafka安装 大数据系列之Flume--几种不同的Sources 大数据系列之Flume+HDFS 关于Flume 的 一些核心概念: 组件名称     功能介绍 Agent ...

  9. openjudge-NOI 2.6基本算法之动态规划 专题题解目录

    1.1759 最长上升子序列 2.1768 最大子矩阵 3.1775 采药 4.1808 公共子序列 5.1944 吃糖果 6.1996 登山 7.2000 最长公共子上升序列 8.2718 移动路线 ...

  10. js固定小数位数 .toFixed()

    toFixed(num)法可把 Number 四舍五入为指定小数位数的数字. num为需要固定的位数 var num=2;console.log(num.toFixed(2));//2.00;var ...