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.pswp.cn/news/273654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273654.shtml
英文地址,請注明出處:http://en.pswp.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…