圈水池(凸包入門)

2021-08-20 12:05:22 字數 898 閱讀 9118

描述 有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!(籬笆足夠多,並且長度可變) 輸入

第一行輸入的是n,代表用n組測試資料(1<=n<=10)

第二行輸入的是m,代表本組測試資料共有m個供水裝置(3<=m<=100)

接下來m行代表的是各個供水裝置的橫縱座標

輸出輸出各個籬笆經過各個供水裝置的座標點,並且按照x軸座標值從小到大輸出,如果x軸座標值相同,再安照y軸座標值從小到大輸出

樣例輸入

1

40 0

1 12 3

3 0

樣例輸出

0 0

2 33 0

思路:自己悶頭搞了好久才知道是裸的凸包演算法模板題......小白特別白555。凸包演算法詳解(附模板):www.cnblogs.com/aiguona/p/7232243.html

**如下:

#include#include#includeusing namespace std;

struct nodep[105],s[105];

bool cmp(node a, node b)

int main()

t=top-1;

for(int i=n-1;i>=0;--i) // 求上凸包

--top; // 下凸包和上凸包的首尾點肯定是重疊的,所以刪去

sort(s,s+top,cmp);

for(int i=0;iprintf("%d %d\n",s[i].x,s[i].y);

}return 0;

}

圈水池 凸包入門

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

凸包問題 圈水池 nyist 78

include include include using namespace std struct point int cmp1 point a,point b 按y排序 int cmp2 point a,point b 按x排序 此處是大於號 int graham point pnt,int n...

NYOJ 78 圈水池(凸包基礎)

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