USACO Training Section 5.1 Fencing the Cows 圈奶牛(凸包)

夫約翰想要建造一個圍欄用來圍住他的奶牛,可是他資金匱乏。他建造的圍欄必須包括他的奶牛喜歡吃草的所有地點。對于給出的這些地點的坐標,計算最短的能夠圍住這些點的圍欄的長度。
輸入
輸入數據的第一行包括一個整數 N。N(0 <= N <= 10,000)表示農夫約翰想要圍住的放牧點的數目。接下來 N 行,每行由兩個實數組成,Xi 和 Yi,對應平面上的放牧點坐標(-1,000,000 <= Xi,Yi <= 1,000,000)。數字用小數表示。
輸出
輸出必須包括一個實數,表示必須的圍欄的長度。答案保留兩位小數。
樣例輸入
4
4 8
4 12
5 9.3
7 8
樣例輸出
12.00

不說了

凸包模板題

維護了凸包后計算相鄰兩個點之間的距離

#include<bits/stdc++.h>
using namespace std;
#define eps 1e-5
inline int read(){char ch=getchar();int res=0;while(!isdigit(ch)) ch=getchar();while(isdigit(ch)) res=(res<<3)+(res<<1)+(ch^48),ch=getchar();return res;
}
int n,m;
struct  point{double x,y;point(){}point (int a,int b):x(a),y(b){};friend inline point operator -(const point &a,const point &b){return point(a.x-b.x,a.y-b.y);}friend inline double operator *(const point &a,const point &b){return (a.x*b.y-a.y*b.x);}inline double calc()const{return x*x+y*y;}
}p[10005],q[10005];
inline bool comp(const point &a,const point &b){double det=(a-p[1])*(b-p[1]);if(fabs(det)>=eps) return det>0;return a.calc()<b.calc();
}
inline double coun(point a,point b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
inline void graham(){int date=1;for(int i=2;i<=n;i++){if(p[i].x<p[date].x||(p[i].x==p[date].x&&p[i].y<p[date].y))date=i;}if(date!=1) swap(p[date],p[1]);sort(p+2,p+1+n,comp);q[++m]=p[1];for(int i=2;i<=n;i++){while(m>=3&&((q[m]-q[m-1])*(p[i]-q[m-1])<=eps))m--;q[++m]=p[i];}q[m+1]=p[1];
}
inline double cal(){double ans=0;for(int i=1;i<=m;i++){ans+=coun(q[i+1],q[i]);}return ans;
}
int main(){n=read();for(int i=1;i<=n;i++){cin>>p[i].x>>p[i].y;}graham();double s=cal();printf("%.2lf\n",s);
}

轉載于:https://www.cnblogs.com/stargazer-cyk/p/10366469.html

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

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

相關文章

Linux各發行版本簡介

Linux的發行版本可以大體分為兩類&#xff0c;一類是商業公司維護的發行版本&#xff0c;一類是社區組織維護的發行版本&#xff0c;前者以著名的Redhat&#xff08;RHEL&#xff09;為代表&#xff0c;后者以Debian為代表。 1、Redhat&#xff0c;應該稱為Redhat系列&#xff…

個推應用統計產品(個數)Android集成實踐

2019獨角獸企業重金招聘Python工程師標準>>> 前段時間&#xff0c;我們公司的產品又雙叒叕給我們提了新需求&#xff0c;要求我們把APP相關的數據統計分析一下&#xff0c;這些指標包括但不限于應用每日的新增、活躍、留存率等等&#xff0c;最好每天都能提供數據報…

JVM中安全點safePoint有哪些?

安全點是jvm選來進行GC的線程中斷點。線程在執行到安全點后詢問GC標志位&#xff0c;若標志位標識將要進行GC&#xff0c;則程序主動中斷掛起線程等待GC。安全點的選定基本上是根據"是否具有讓程序長時間執行的特征"為標準進行選定的。目前會產生安全點的主要有&…

深入理解 PHP7 中全新的 zval 容器和引用計數機制

深入理解 PHP7 中全新的 zval 容器和引用計數機制 最近在查閱 PHP7 垃圾回收的資料的時候&#xff0c;網上的一些代碼示例在本地環境下運行時出現了不同的結果&#xff0c;使我一度非常迷惑。 仔細一想不難發現問題所在&#xff1a;這些文章大多是 PHP5.x 時代的&#xff0c;而…

分布式系統的架構思路

見&#xff1a;http://www.cnblogs.com/chulung/p/5653135.html 一、前言 在計算機領域&#xff0c;當單機性能達到瓶頸時&#xff0c;有兩種方式可以解決性能問題&#xff0c;一是堆硬件&#xff0c;進一步提升配置&#xff0c;二是分布式&#xff0c;水平擴展。當然&#xff…

狂賭智能手機 中國互聯網巨頭深陷零利潤困局

編者按&#xff1a;智能手機正在中國普及&#xff0c;互聯網企業趨之若鶩。然而&#xff0c;在蘋果、三星共享智能手機市場99%利潤的大背景下&#xff0c;中國互聯網企業要從所剩無幾的利潤空間里分一杯羹&#xff0c;注定備受煎熬&#xff0c;前路迷茫。 互聯網巨頭紛紛進入智…

占用較多堆外內存的區域

&#xff08;1&#xff09;Director Memory 主要在nio中會使用&#xff0c;在內存不足時會拋出OOM或者OOM:Direct buffer memory。 &#xff08;2&#xff09;線程堆棧 為每個線程分配的棧空間&#xff0c;用于保存局部變量&#xff0c;執行程序代碼。內存不足時可能拋出StackO…

Oracle SELECT INTO 和 INSERT INTO SELECT 兩種表復制語句詳解

在Oracle中select into from不可以使用&#xff0c;用create table select代替該功能&#xff01;&#xff01;&#xff01;在Sql Server中可以正常使用。1.INSERT INTO SELECT語句語句形式為&#xff1a;Insert into Table2(field1,field2,...) select value1,value2,... from…

帆軟地址欄傳參,實例

自動查詢&#xff1a; http://help.finereport.com/finereport9.0/doc-view-409.html參數的種類與區別&#xff1a; http://help.finereport.com/doc-view-156基本參數傳遞&#xff08;視頻&#xff09;&#xff1a; http://bbs.fanruan.com/lesson-14.html超級鏈接-傳遞多個值…

RMI 說明

見&#xff1a;https://baike.baidu.com/item/RMI/1786244?fraladdin RMI遠程方法調用 相關概述 RMI是Java的一組擁護開發分布式應用程序的API。RMI使用Java語言接口定義了遠程對象&#xff0c;它集合了Java序列化和Java遠程方法協議(Java Remote Method Protocol)。簡單地說&…

李善友:為什么外企人不敢創業

摘要&#xff1a;20年前&#xff0c;人們最驕傲的是進外企&#xff0c;創業意味著找不到工作。而現在相反&#xff0c;你要說自己在外企工作&#xff0c;會被人笑話&#xff0c;令人激動的事兒是去創業。 李善友&#xff1a;中歐創業中心主任創業學兼任教授、酷6網創始人 孫陶然…

JVM對象占用內存計算

大家都知道&#xff0c;jvm中對象實例存儲在堆中&#xff0c;對象的引用存儲在棧中&#xff0c;而對象的元數據(類型數據)存儲在方法區。在我們進行內存優化的過程中經常需要了解每個對象占用的內存大小。接下來我將介紹對象占用內存大小的計算方式。 Java的對象模型 java是面…

繪圖基礎語法與常用參數

1 # -*- coding: utf-8 -*-2 3 ###############################################################################4 ####################### 正文代碼 #######################5 #################################################################…

MyEclipse 皮膚、主題、背景色

第一步&#xff1a;打開myeclipse--->help--->install from site--->Add將路徑粘貼在這里。等待安裝顏色主題。https://raw.github.com/guari/eclipse-ui-theme/master/com.github.eclipseuitheme.themes.updatesite 第二步&#xff1a;http://eclipsecolorthemes.org…

RPC 遠程過程調用協議

RPC&#xff08;Remote Procedure Call Protocol&#xff09;——遠程過程調用協議&#xff0c;它是一種通過網絡從遠程計算機程序上請求服務&#xff0c;而不需要了解底層網絡技術的協議。 RPC協議假定某些傳輸協議的存在&#xff0c;如TCP或UDP&#xff0c;為通信程序之間攜…

周鴻祎:創業前的積累很重要

摘要&#xff1a;雖然公司上市&#xff0c;也投資了很多公司&#xff0c;日前&#xff0c;在中國人民大學的演講中&#xff0c;周鴻祎卻稱自己“從來不是一個成功人士&#xff0c;曾經是一個最大的失敗者”。 360特供機還沒露面&#xff0c;已經被周鴻祎通過微博炒得火熱&#…

BZOJ 4710 [Jsoi2011]分特產 解題報告

4710 [Jsoi2011]分特產 題意 給定\(n\)個集合&#xff0c;每個集合有相同的\(a_i\)個元素&#xff0c;不同的集合的元素不同。將所有的元素分給\(m\)個不同位置&#xff0c;要求每個位置至少有一個元素&#xff0c;求分配方案數。 先考慮兩個簡單的問題 給定\(m\)個相同元素和\…

java接口調試思想

對于接口調試的理解&#xff1a;最近多次參與接口調試工作&#xff0c;一般情況都是獲取對方接口文檔&#xff0c;文檔中有加密驗證方式&#xff0c;根據加密驗證方式開發&#xff0c;調用對應的接口。可以不可以簡化這個流程那&#xff0c;至少減少一方的工作量。1、減少調用方…

SOA (面向服務的架構)

見&#xff1a;https://baike.baidu.com/item/SOA/2140650?fraladdin UDDI 解說參見&#xff1a;UDDI是什么 SOAP解說參見&#xff1a; SOAP:簡單對象訪問協議 面向服務的架構&#xff08;SOA&#xff09;是一個組件模型&#xff0c;它將應用程序的不同功能單元&#xff08;稱…

mysql中count(*)和count(1)和count(column)區別

在日常的mysql使用中&#xff0c;我們經常會看到SELECT COUNT(*)、SELECT COUNT(1)等查詢語句&#xff0c;他們到底有什么區別呢&#xff1f;今天我就來總結下。 我們先從函數的含義說起&#xff1a; count() 統計滿足查詢條件的結果集的總行數(包含null)&#xff0c;其中count…