Poj 1556 The Doors 计算几何+最短路

其实本题非常的无脑,无脑拍完1A,写到blog里只因为TM无脑拍也拍了很久啊= =

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
#include <string>
#include <iostream>
#include <map>
#include <cstdlib>
#include <list>
#include <set>
#include <queue>
#include <stack>
#include <sstream>using namespace std;typedef long long LL;
const int maxn = 2000;
const int maxm = 2000 * 2000; 
const double INF = 1e30;
const double eps = 1e-7;
struct Point {double x,y;Point(double x = 0,double y = 0):x(x),y(y) {}
};Point str(0,5),end(10,5);
vector<Point> p,pw;
double dist[maxn][maxn],d[maxn];
int N,M;int dcmp(double x) {if(fabs(x) < eps) return 0;if(x < 0) return -1;return 1;
}Point operator - (Point a,Point b) {return Point(a.x - b.x,a.y - b.y);
}double Cross(Point a,Point b) {return a.x * b.y - a.y * b.x;
}double Dot(Point a,Point b) {return a.x * b.x + a.y * b.y;
}bool SegmentCross(Point a1,Point a2,Point b1,Point b2) {double c1 = Cross(a2 - a1,b1 - a1),c2 = Cross(a2 - a1,b2 - a1),c3 = Cross(b2 - b1,a1 - b1),c4 = Cross(b2 - b1,a2 - b1);return dcmp(c1) * dcmp(c2) < 0 && dcmp(c3) * dcmp(c4) < 0;
}bool nonecross(Point a1,Point a2) {for(int i = 0;i < pw.size();i += 2) {if(SegmentCross(a1,a2,pw[i],pw[i + 1]))return false;}return true;
}void solve() {//构建邻接矩阵M = p.size();for(int i = 0;i < M;i++) {for(int j = i + 1;j < M;j++) {if(nonecross(p[i],p[j])) {dist[i][j] = dist[j][i] = sqrt(Dot(p[i]-p[j],p[i]-p[j]));} else dist[i][j] = INF;}}//bellman-fordfor(int i = 0;i < M;i++) d[i] = INF;d[0] = 0;for(int i = 0;i < M;i++) {for(int j = 0;j < M;j++) {for(int k = 0;k < M;k++) if(dist[j][k] < INF) {if(d[j] < INF) {d[k] = min(d[k],d[j] + dist[j][k]);}}}}printf("%.2f\n",d[M - 1]);
}int main() {while(cin >> N,N != -1) {p.clear();pw.clear();p.push_back(Point(0,5));for(int i = 1;i <= N;i++) {double posx,posy;cin >> posx;pw.push_back(Point(posx,0));for(int j = 0;j < 4;j++) {cin  >> posy;p.push_back(Point(posx,posy));pw.push_back(Point(posx,posy));}pw.push_back(Point(posx,10));}p.push_back(Point(10,5));solve();}return 0;
}

  

转载于:https://www.cnblogs.com/rolight/p/3849494.html

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

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

相关文章

String equals()方法 源码分析

public boolean equals(Object anObject) {// :比较的引用类型&#xff0c;比较的是地址值是否相同if (this anObject) { //地址值相等&#xff0c;返回truereturn true;}// instanceOf判断一个对象是不是某个类型的实例if (anObject instanceof String) {String anotherStrin…

Google,真的要离我们而去吗?

Google,真的要离我们而去吗&#xff1f; 好怀念&#xff0c;真正要解决问题&#xff0c;还得搜google!转载于:https://www.cnblogs.com/fuyujian/p/3852444.html

Oracle 位图索引

内容简介: 1.位图索引 1.1位图索引使用注意事项; 1.2 使用位图索引; 1.3 位图索引对DML操作的影响; 2.位图连接索引 2.1 明确需求后使用位图索引; 2.1创建位图连接索引的注意事项: 1.位图索引: 1.1位图索引使用注意事项: ❏ 一般适用于低基数列; ❏ 适合数据仓库; ❏ 对于启用位…

oracle服务器和客户端字符集的查看和修改

一、什么是oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储&#xff0c;处理&#xff0c;检索数据。它使数据库工具&#xff0c;错误消息&#xff0c;排序次序&#xff0c;日…

Java 按位运算符(,|,^,,)

&(按位与) 定义&#xff1a;针对二进制&#xff0c;只要有一个为0&#xff0c;就为0。2 & 5 02的二进制&#xff1a;00000000 00000000 00000000 000000105的二进制&#xff1a;00000000 00000000 00000000 00000101 |(按位或) 定义&#xff1a;针对二进制&#xff0c…

Oracle 多行合并一行 方法

假如有如下表&#xff0c;其中各个i值对应的行数是不定的 Sql代码 SQL> select * from t; I A D ---------- ---------- ------------------- 1 b 2008-03-27 10:55:42 1 a 2008-03-27 10:55:46 1…

Docker 简单入门(一)

Docker 简介 Docker是一个开源的容器引擎&#xff0c;它有助于更快地交付应。Docker可将应用程序和基础设施层隔离&#xff0c;并且能将基础设施当作程序-样进行管理。使用Docker&#xff0c;可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。 Docke…

PDF解决方案(2)--文件转PDF

相关专题链接&#xff1a; PDF解决方案&#xff08;1&#xff09;--文件上传 PDF解决方案&#xff08;2&#xff09;--文件转PDF PDF解决方案&#xff08;3&#xff09;--PDF转SWF PDF解决方案&#xff08;4&#xff09;--在线浏览 前言&#xff1a;上一篇中讲到的文件上传&…

Docker 常用命令(二)

Docker 镜像常用命令 搜索镜像 可使用 docker search 命令搜索存放在 Docker Hub 中的镜像。例如&#xff1a; docker search java 执行该命令后&#xff0c; Docker 就会在 Docker Hub 中搜索含有 java 这个关键词的镜像仓库。执行该命令后&#xff0c;可看到类似于如下的表格…

Docker 使用Dockerfile构建Docker(三)

Dockerfile 简单使用 先来编写一个最简单的 Dockerfile。 例如&#xff1a; FROM nginx RUN echo <h1>使用Dockerfile构建镜像</h1> > /usr/share/nginx/html/index.html 该 Dockerfile 非常简单&#xff0c;其中的 FORM 、 RUN 都是 Dockerfile 的指令。 FROM …

网络流之最大流问题

Reference&#xff1a; http://blog.csdn.net/rrerre/article/details/6751520 http://blog.csdn.net/y990041769/article/details/21026445 http://www.nocow.cn/index.php/Translate:USACO/NetworkFlow 最大流Edmonds_Karp算法模板&#xff1a; EK算法即增广路算法。 最大流最…

delphi读取excel

简单的例子 1 procedure TForm1.Button1Click(Sender: TObject);2 var3 ExcelApp,MyWorkBook: OLEVariant;4 begin5 opendialog1.Filter:Microsoft Excel Workbook (*.xls)|*.XLS|; 6 edit2.Text : sheet1;7 if opendialog1.Execute then8 begin9 edit1.Text:o…

Docker-compose 常用命令及网络设置(五)

Docker Compose 常用命令 build 构建或重新构建服务。服务被构建后将会以 project_service的形式标记,例如:comoretest db。help 査看指定命令的帮助文档,该命令非常实用。 docker-compose所有命令的帮助文档都可通过该命令查看。 docker-compose he lp COMMAND 示例 docker-co…

浅谈 trie树 及其实现

定义&#xff1a;又称字典树&#xff0c;单词查找树或者前缀树&#xff0c;是一种用于快速检索的多叉树结构&#xff0c; 如英文字母的字典树是一个26叉树&#xff0c;数字的字典树是一个10叉树。 核心思想&#xff1a;是空间换时间.利用字符串的公共前缀来降低查询时间的开销以…

Docker-compose 安装与基本使用(四)

安装 Docker-Compose Compose有多种安装方式,例如通过 shell, pip以及将 Compose作为容器安装等。本次安装以Shell 为主。 通过以下命令自动下载并安装适应系统版本的 Compose: curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(un…

如何开始DDD(完)

连续写了两篇文章&#xff0c;这一篇我想是序的完结篇了。结合用户注册的例子再将他简单丰富一下。在这里只添加一个简单需求&#xff0c;就是用户注册成功后给用户发一封邮件。补充一下之前的代码 public class DomainService {public void Register(User user){if (_userRepo…

git pull 报错:Untracked Fles Preventing Merge

场景 使用 git pull 命令更新报错解决 找到对应的文件删除后重新打开项目。

关于string,我今天科普的

今天下午朋友讨论组上讨论一个关于string的问题&#xff0c;问题是这样的&#xff0c;string a"aaa";string ba;a"bbb",为什么测试b的值不改变&#xff1f;之前我看过一个文章&#xff0c;知道肯定不相等&#xff0c;因为引用地址的一系列问题&#xff0c;…

git pull 报错:The following untracked working tree files would be overwritten by merge

场景 使用 git pull 命令更新报错 Updating d652d1c..fa05549 error: The following untracked working tree files would be overwritten by merge:.idea/encodings.xmlPlease move or remove them before you can merge. Aborting 解决 使用 git clean -d -fx 命令即可。

SpringBoot 配置多数据源

项目Git地址&#xff1a;SpringBoot 配置多数据源&#xff1a;Jacob-multi-data-source 准备工作 准备两个数据库(此模块中两个数据库一个为本地 一个为远程&#xff0c;本地为主&#xff0c;远程为从)。然后建表。 #本地库 CREATE TABLE username (id bigint(11) NOT NULL AUT…