bzoj1670【Usaco2006 Oct】Building the Moat 護城河的挖掘

1670: [Usaco2006 Oct]Building the Moat護城河的挖掘

Time Limit:?3 Sec??Memory Limit:?64 MB
Submit:?387??Solved:?288
[Submit][Status][Discuss]

Description

為了防止口渴的食蟻獸進入他的農場,Farmer John決定在他的農場周圍挖一條護城河。

農場里一共同擁有N(8<=N<=5,000)股泉水,而且,護城河總是筆直地連接在河道上的相鄰的兩股泉水。護城河必須能保護全部的泉水,也就是說,能包圍全部的泉水。泉水一定在護城河的內部,或者恰好在河道上。當然。護城河構成一個封閉的環。

挖護城河是一項昂貴的project,于是,節約的FJ希望護城河的總長度盡量小。

請你寫個程序計算一下,在滿足需求的條件下,護城河的總長最小是多少。 全部泉水的坐標都在范圍為(1..10,000,000,1..10,000,000)的整點上,一股泉水相應著一個唯一確定的坐標。而且,隨意三股泉水都不在一條直線上。

下面是一幅包括20股泉水的地圖,泉水用"*"表示


圖中的直線,為護城河的最優挖掘方案。即能圍住全部泉水的最短路線。 路線從左上角起,經過泉水的坐標依次是:(18,0),(6,-6),(0,-5),(-3,-3),(-17,0),(-7,7),(0,4),(3,3)。繞行一周的路徑總長為70.8700576850888(...)。答案僅僅須要保留兩位小數,于是輸出是70.87。

Input

* 第1行: 一個整數,N * 第2..N+1行: 每行包括2個用空格隔開的整數。x[i]和y[i],即第i股泉水的位 置坐標?

Output

* 第1行: 輸出一個數字。表示滿足條件的護城河的最短長度。保留兩位小數?

Sample Input

20
2 10
3 7
22 15
12 11
20 3
28 9
1 12
9 3
14 14
25 6
8 1
25 1
28 4
24 12
4 15
13 5
26 5
21 11
24 4
1 8

Sample Output

70.87

HINT

Source

凸包 卡殼




凸包模板題




#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define maxn 5005
using namespace std;
int n,top;
double ans;
struct P{int x,y;}p[maxn],s[maxn];
inline int read()
{int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
inline P operator-(const P &a,const P &b)
{return (P){a.x-b.x,a.y-b.y};
}
inline ll operator*(const P &a,const P &b)
{return a.x*b.y-a.y*b.x;
}
inline ll dis(P a,P b)
{return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
inline bool operator<(const P &a,const P &b)
{ll t=(a-p[1])*(b-p[1]);if (t==0) return dis(p[1],a)<dis(p[1],b);else return t<0;
}
inline void solve()
{int t=1;F(i,2,n) if (p[i].y<p[t].y||(p[i].y==p[t].y&&p[i].x<p[t].x)) t=i;swap(p[1],p[t]);sort(p+2,p+n+1);s[++top]=p[1];s[++top]=p[2];F(i,3,n){while (top>=2&&(s[top]-s[top-1])*(p[i]-s[top-1])>=0) top--;s[++top]=p[i];}s[top+1]=p[1];F(i,1,top) ans+=sqrt(dis(s[i],s[i+1]));
}
int main()
{n=read();F(i,1,n) p[i].x=read(),p[i].y=read();solve();printf("%.2lf\n",ans);return 0;
}


轉載于:https://www.cnblogs.com/yangykaifa/p/7263030.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455026.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

音視頻編解碼的一些源代碼

音視頻編解碼的一些源代碼 &#xff08;轉&#xff09;資料名稱&#xff1a;音視頻編解碼的一些源代碼 資料成文時間&#xff1a;不詳 語言&#xff1a;英文 頁數&#xff1a;很多 何人所著&#xff08;來源&#xff09;&#xff1a; 文件格式&#xff1a;原代碼 開發工具:vc 說…

Vue之組件之間的數據傳遞

Vue的組件作用域都是孤立的&#xff0c;不允許在子組件的模板內直接引用父組件的數據&#xff0c;必須使用特定的方法才能實現組件之間的數據傳遞。 下列為在vue-cli創建項目中的操作 一父組件向子組件傳遞數據 在Vue中&#xff0c;用props向子組件傳遞數據。 子組件部分&#…

偶然發現一個大佬寫的 React 腳手架,叫Moderate, 用起來很方便

發現一個大佬寫的 React 腳手架&#xff0c;叫Moderate, 用起來很方便 Moderate&#xff0c;意思為適中的&#xff0c;適度的&#xff0c;用這個作為代號&#xff0c;主要取決于他的本名“中用”&#xff0c;其一以貫之的想法就是中庸&#xff0c;秉承著以人為本的態度&#xf…

案例 自動辦公_1300張辦公系列前臺參考圖,請您查收!

設計情報局室內設計師的靈感聚集地關注一個有格調的空間必定有一處高顏值的前臺漂亮的前臺很重要...是空間給人的第一印象一個獨一無二的前臺設計還可以提升整個空間的氣質與逼格連個漂亮的前臺都沒有作為顏控界扛把子的設計師們還怎么混&#xff1f;SO今天小編給大家帶來一份《…

iframe里面的元素觸發父窗口元素事件的jquery代碼 轉

例如父窗口定義了一個事件。 top: $(dom1).bind(topEvent, function(){}); 那么iframe里面的元素怎樣觸發父窗口dom1的事件呢&#xff1f;這樣嗎&#xff1f; $(dom1, parent.document).trigger(topEvent); 看似正確&#xff0c;實則誤導人。 因為父窗口的jquery對象與iframe里…

mplayer 所支持的音視頻編解碼

這里我把mplayer 所支持的音視頻編解碼都羅列出來&#xff0c;方便大家查閱&#xff1b;-----------------------------------------------------------------------------------------------Video codecs:Working video codecscodec namefourcccodecfileoutcommentsFFmpeg Zip…

使用ifconfig取出網卡eth0的ip地址

方法1&#xff1a;sed命令12[rootoldboyedu ~]# ifconfig eth0 |sed -n 2p |seds#^.*addr:##g|sed s# B.*$##g10.0.0.50方法2&#xff1a;cut12[rootoldboyedu ~]# ifconfig eth0|grep inetaddr|cut -d ":" -f2|cut -d " " -f110.0.0.50方法3&#xff1a;…

目標檢測_目標檢測 | Anchor free的目標檢測進階版本

今天說的是《Soft Anchor-Point Object Detection》&#xff0c;其也是最近關于anchor free的目標檢測的論文&#xff0c;作者來自于CMU&#xff0c;一作同樣也是FSAF(2019 CVPR)的作者。該論文的出發點還是在樣本選擇和FPN特征選擇層面。背景Anchor free是目標檢測領域的一個研…

Colly實現豆瓣電影Top250爬取

使用 Colly 實現 豆瓣電影Top250爬取 package mainimport ("encoding/csv""github.com/PuerkitoBio/goquery""github.com/gocolly/colly""log""os""strings""time" )type Movie struct {idx string…

homework1

一.什么是RUP?二.什么是XP?三.什么是敏捷過程&#xff1f; 一。什么是RUP?RUP是一種完整而且完美的軟件過程 1。最佳實踐 &#xff08;1&#xff09;迭代式開發 &#xff08;2&#xff09;管理需求 &#xff08;3&#xff09;使用基于構件軟件的體系結構 &#xff08;4&…

編程:休息片刻的好處

原文作者 Axel Rauschmayer 是一位居住在德國慕尼黑的自由軟件工程師。他在這篇博文列舉了在編程期間休息片刻的一些好處。 你會更精明而不是更賣力地工作。我曾經為了一個功能的實現而賣力工作過。每天12小時&#xff0c;整整工作了兩個星期。我付出了很多努力。那兩個星期之…

五個溫度帶的分界線_女神建筑師在拿破侖故鄉打造的海景別墅,超美!超有溫度!【環球設計2225期】...

生活的溫度 法國建筑師阿米莉亞塔維拉(Amelia Tavella)一直對設計充滿熱情&#xff0c;她出生在阿雅克肖市&#xff0c;在巴黎的建筑學院學習建筑專業&#xff0c;如今她居住普羅旺斯地區的艾克斯。她說&#xff1a;“設計讓我涉足很多有趣的領域并能充分發揮我的想象力。這是一…

1118. Birds in Forest (25)

并查集。。。要用路徑壓縮&#xff0c;不然會超時&#xff0c; #include<iostream> #include<string> #include<map> #include<vector> #include<algorithm> #include<queue> #include<set> #include<stack> using namespace …

Java線程池有哪些作用

線程池 線程池的作用 核心點:復用機制提前創建好固定的線程一直在運行狀態實現復用限制線程創建數量。 1.降低資源消耗:通過池化技術重復利用已創建的線程&#xff0c;降低線程創建和銷毀造成的損耗。 2.提高響應速度:任務到達時&#xff0c;無需等待線程創建即可立即執行。…

中國重名的市轄區

中國重名的市轄區 截止2016年7月31日 新華區(3) 河北省石家莊市新華區 河北省滄州市新華區 河南省平頂山市新華區 橋西區(3) 河北省石家莊市橋西區 河北省邢臺市橋西區 河北省張家口市橋西區 海州區(2) 遼寧省阜新市海州區 江蘇省連云港市海州區 郊區(4) 山西省陽泉市郊區 山西…

安卓關于圖片壓縮的那些事兒,希望給每個安卓開發人員一些幫助

從事安卓開發也有幾年了,本人喜歡開門見山,此篇文章是處理以java語言下的安卓開發過程中圖片壓縮問題。 圖片加載在我們的開發過程中都是一個內存大戶,以至于我們加載每一個圖片bitmap對象的時候都應該進行回收以減少內存的占用&#xff0c;而如果單張圖片的大小加載在內存都會…

銀行it現狀調研_中央銀行系統行業現狀調研分析及發展趨勢預測報告(2019年版)...

QYResearch預測&#xff1a;2019-2025全球與中國中央銀行系統市場現狀及未來發展趨勢【紙版價格】&#xff1a;RMB 15000【電子版(PDF)價格】&#xff1a;RMB 15000【報告篇幅】&#xff1a;112【報告圖表數】&#xff1a;158【報告出版時間】&#xff1a;2019年11月報告摘要本…

視頻編解碼技術小結

1、什么是H.261編碼協議 答&#xff1a;H.261是最早出現的視頻編碼建議&#xff0c;它采用的算法結合了可減少時間冗余的幀間預測和可減少空間冗余的DCT變換的混合編碼方法&#xff0c;其輸出碼率是p64kbit/s。p取值較小時&#xff0c;只能傳清晰度不太高的圖像&#…

fiber報錯 (type *big.Int has no field or method FillBytes)

如何繞過dgrijalva/jwt go中的cve-2020-26160漏洞 go jwt jwt-go由于存在一個高級漏洞&#xff0c;Gitlab管道中無法傳遞容器安全狀態。此漏洞為jwt-go&#xff0c;安裝的版本為v3.2.0incompatible。錯誤標題如下&#xff1a;jwt-go: access restriction bypass vulnerability…

基于BISS0001構成的熱釋電紅外延時照明控制器電路圖

BISS0001是采用CMOS數模混合結構、具有DIP-16和SOIC-16兩種封裝的熱釋電紅外傳感信號處理集成電路。芯片內部集成了電壓比較器、狀態控制器、延時電路定時器、封鎖時間定時器以及參考電壓源等電路&#xff0c;常用于防盜報警器、自動門等各種自動開關。利用BISS0001構成的熱釋電…