The Doors

You are to find the length of the shortest path through a chamber containing obstructing walls. The chamber will always have sides at x = 0, x = 10, y = 0, and y = 10. The initial and final points of the path are always (0, 5) and (10, 5). There will also be from 0 to 18 vertical walls inside the chamber, each with two doorways. The figure below illustrates such a chamber and also shows the path of minimal length. 

Input

The input data for the illustrated chamber would appear as follows.


4 2 7 8 9 
7 3 4.5 6 7

The first line contains the number of interior walls. Then there is a line for each such wall, containing five real numbers. The first number is the x coordinate of the wall (0 < x < 10), and the remaining four are the y coordinates of the ends of the doorways in that wall. The x coordinates of the walls are in increasing order, and within each line the y coordinates are in increasing order. The input file will contain at least one such set of data. The end of the data comes when the number of walls is -1.

Output

The output should contain one line of output for each chamber. The line should contain the minimal path length rounded to two decimal places past the decimal point, and always showing the two decimal places past the decimal point. The line should contain no blanks.

Sample Input

1
5 4 6 7 8
2
4 2 7 8 9
7 3 4.5 6 7
-1

Sample Output

10.00
10.06

题目就是说,给你一个10*10的正方形房间,里面会用一些垂直与x轴的墙隔开.每个墙上有两个门,然后给你门的两个端点坐标,要求求出从(0,5)走到(10,5)的最短路;

那其实本质上就是最短路,如果没有墙隔开,就单单这几个点,那就很水了.现在还要求判断一下,某两点之间是否可以直达.所谓直达,就是,这两点的连线不与其他任何墙相交(交于端点是允许的).

至此,题目解完了.

 #include<cstdio>
 #include<cstring>
 #include<algorithm>
 #include<iostream>
 #include<cmath>
 #define INF 10000000
 using namespace std;
 ;
 int n;
 ][];
 ];
 ],o;
 double dis(point a,point b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
 :x>eps;}
 double cross(point a,point b){return a.x*b.y-a.y*b.x;}
 point operator - (point a,point b){point ret; ret.x=a.x-b.x,ret.y=a.y-b.y; return ret;}
 int Intersect(point a,point b,point c,point d){
     double s1,s2,s3,s4;
     int d1,d2,d3,d4;
     d1=dcmp(s1=cross(a-c,b-c));
     d2=dcmp(s2=cross(a-d,b-d));
     d3=dcmp(s3=cross(c-a,d-a));
     d4=dcmp(s4=cross(c-b,d-b));
     &&(d3^d4)==-) ;
     ;
 }
 int main(){
     ; scanf("%d",&n)){
         ,cnt0=; P[].x=,P[].y=;
         ; i<n; i++){
             double x,y1,y2,y3,y4;
             scanf("%lf%lf%lf%lf%lf",&x,&y1,&y2,&y3,&y4);
             P[cnt].x=x,P[cnt++].y=y1;
             P[cnt].x=x,P[cnt++].y=y2;
             P[cnt].x=x,P[cnt++].y=y3;
             P[cnt].x=x,P[cnt++].y=y4;
             seg[cnt0].a.x=x,seg[cnt0].a.y=,seg[cnt0].b.x=x,seg[cnt0++].b.y=y1;
             seg[cnt0].a.x=x,seg[cnt0].a.y=y2,seg[cnt0].b.x=x,seg[cnt0++].b.y=y3;
             seg[cnt0].a.x=x,seg[cnt0].a.y=y4,seg[cnt0].b.x=x;seg[cnt0++].b.y=;
         }
         P[cnt].x=,P[cnt].y=;
         ; i<=cnt; i++){
             ; j<=cnt; j++) cost[i][j]=INF; cost[i][i]=;
         }
         ; i<=cnt; i++){
             ; j<=cnt; j++) if (j!=i){
                 o.a.x=P[i].x,o.a.y=P[i].y,o.b.x=P[j].x,o.b.y=P[j].y;
                 ;
                 ; k<cnt0; k++) ){flag=; break;}
                 ) cost[i][j]=dis(P[i],P[j]);
             }
         }
         ; k<=cnt; k++)
             ; i<=cnt; i++)
                 ; j<=cnt; j++) if (cost[i][k]+cost[k][j]<cost[i][j]) cost[i][j]=cost[i][k]+cost[k][j];
         printf(][cnt]);
     }
     ;
 }

The Doors的更多相关文章

  1. poj 1556 The Doors

    The Doors Time Limit: 1000 MS Memory Limit: 10000 KB 64-bit integer IO format: %I64d , %I64u   Java ...

  2. POJ 1556 The Doors(线段交+最短路)

    The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5210   Accepted: 2124 Descrip ...

  3. 100 doors

    Question There are 100 doors in a row that are all initially closed. You make 100 passes by the door ...

  4. poj 1556 The Doors(线段相交,最短路)

      The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7430   Accepted: 2915 Descr ...

  5. POJ 1556 The Doors 线段判交+Dijkstra

    The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6734   Accepted: 2670 Descrip ...

  6. POJ 1556 - The Doors 线段相交不含端点

    POJ 1556 - The Doors题意:    在 10x10 的空间里有很多垂直的墙,不能穿墙,问你从(0,5) 到 (10,5)的最短距离是多少.    分析:        要么直达,要么 ...

  7. POJThe Doors AND NYIST 有趣的问题

    POJThe Doors AND NYIST 有趣的问题 题目链接:pid=227" target="_blank">Click Here~ 题目分析: 给你横纵坐 ...

  8. 【DOORS】如何基于DOORS实施需求管理

    引言 IBM Rational DOORS,简称DOORS,是被业界广泛认可的需求管理工具,在国内外需求管理领域具有较高的市场占有率.需求管理作为传统的工程领域,理论发展相对成熟和健全.随着越来越多的 ...

  9. POJ1556 The Doors [线段相交 DP]

    The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8334   Accepted: 3218 Descrip ...

  10. CodeForces 1143A The Doors

    The Doors 签到题 #include <iostream> using namespace std; int a[200005]; int main() { int n; scan ...

随机推荐

  1. Python3简单爬虫抓取网页图片

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...

  2. bash:command not found解决方法

    先用:echo $PATH 查看path是否含有:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin如果没有先用临时环境变量(重启 ...

  3. codeforces 15C. Industrial Nim

    题目链接:http://codeforces.com/problemset/problem/15/C $NIM$游戏是次要的,直接异或石头堆就可以了,问题在于给出的石头堆的数量极多. 考虑利用异或的性 ...

  4. hdu 3208 Integer’s Power 筛法

    Integer’s Power Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. P1182 数列分段`Section II`

    传送门 思路: 求数列每段和的最大值的最小值,很明显是用二分法求解,加贪心检验.本题关键是要怎么去高效的check,可以考虑一个贪心的思路,能加的就加上,不能则新开一段,so对于二分的值 u ,我们从 ...

  6. springboot + mybatis 的项目,实现简单的CRUD

    以前都是用Springboot+jdbcTemplate实现CRUD 但是趋势是用mybatis,今天稍微修改,创建springboot + mybatis 的项目,实现简单的CRUD  上图是项目的 ...

  7. 使用ajax判断登录用户名

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx. ...

  8. [原][osg][QT]osg与QT界面结合的简单例子二

    //main.cpp #include "VREObliqueEditorQTWindow.h" #include <QtWidgets/QApplication> # ...

  9. 学习笔记26— roc曲线(python)

    一.概念: 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure 机器学习(ML), 自然语言处理(NLP), 信息检索(IR)等领域, 评估(E ...

  10. ubuntu16.04 安装docker-ce,docker-compose

    2018.11.14更新 参考https://blog.csdn.net/qq_38199832/article/details/77803645 sudo curl -sSL https://dow ...