描述
農夫約翰想要建造乙個圍欄用來圍住他的奶牛,可是他資金匱乏。他建造的圍欄必須包括他的奶牛喜歡吃草的所有地點。對於給出的這些地點的座標,計算最短的能夠圍住這些點的圍欄的長度。
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 描述 有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!籬笆足夠多,並且長度可變 輸入第一行輸...