cogs896 圈奶牛(凸包)

2021-07-30 23:46:42 字數 1305 閱讀 4567

描述

農夫約翰想要建造乙個圍欄用來圍住他的奶牛,可是他資金匱乏。他建造的圍欄必須包括他的奶牛喜歡吃草的所有地點。對於給出的這些地點的座標,計算最短的能夠圍住這些點的圍欄的長度。

program name: fc

input format(file fc.in)

輸入資料的第一行包括乙個整數 n。n(0 <= n <= 10,000)表示農夫約翰想要圍住的放牧點的數目。接下來 n 行,每行由兩個實數組成,xi 和 yi,對應平面上的放牧點座標(-1,000,000 <= xi,yi <= 1,000,000)。數字用小數表示。

output format(file fc.out)

輸出必須包括乙個實數,表示必須的圍欄的長度。答案保留兩位小數。

sample input (file fc.in)

4 4 8

4 12

5 9.3

7 8

sample output (file fc.out)

12.00

凸包**,人生中第一次計算幾何(一a o(∩_∩)o~)

推薦部落格:圈奶牛/

這裡寫**片

#include

#include

#include

#include

#include

using

namespace

std;

const

double eps=1e-7;

struct node;

node po[10010];

int top,sta[20010];

int n;

int dcmp(double x) //精度控制

int cmp(const node &a,const node &b)

double dis(int bh1,int bh2)

void tub()

//下凸殼

int k=top;

for (i=n-1;i>=1;i--)

//上凸殼

if (n>1) top--; //如果n>1,1號點會被算兩遍,所以這裡需要--

double ans=0;

ans+=dis(sta[1],sta[top]);

while (top>1) ans+=dis(sta[top],sta[top-1]),top--; //top>1!!!

printf("%0.2lf",ans);

return;

}int main()

cogs896 圈奶牛(凸包)

描述 農夫約翰想要建造乙個圍欄用來圍住他的奶牛,可是他資金匱乏。他建造的圍欄必須包括他的奶牛喜歡吃草的所有地點。對於給出的這些地點的座標,計算最短的能夠圍住這些點的圍欄的長度。program name fc input format file fc.in 輸入資料的第一行包括乙個整數 n。n 0 n...

圈水池(凸包入門)

描述 有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!籬笆足夠多,並且長度可變 輸入 第一行輸入的是n,代表用n組測試資料 1 n 10 第二行輸入的是m,代...

圈水池 凸包入門

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!籬笆足夠多,並且長度可變 輸入第一行輸...