時間限制:
3000 ms | 記憶體限制:
65535 kb
難度: 4
描述 有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!(籬笆足夠多,並且長度可變) 輸入
第一行輸入的是n,代表用n組測試資料(1<=n<=10)
第二行輸入的是m,代表本組測試資料共有m個供水裝置(3<=m<=100)
接下來m行代表的是各個供水裝置的橫縱座標
輸出輸出各個籬笆經過各個供水裝置的座標點,並且按照x軸座標值從小到大輸出,如果x軸座標值相同,再安照y軸座標值從小到大輸出
樣例輸入
140 0
1 12 3
3 0
樣例輸出
0 02 33 0
凸包問題,這個問題並不是很難,前提是得理解,理解了以後會很容易就做出來
首先要會判斷點在有向線段左側或者右側的方法,這個判定方式是用叉乘的方法
若點p1(x1,y1),p2(x2,y2),p(x,y),那麼有p1p2=(x2-x1,y2-y1),p1p=(x-x1,y-y1);
所以他們的叉乘:(x2-x1)(y-y1)-(x-x1)(y2-y1)
當結果大於零時,點p在p1p2左側,小於零時p在p1p2右側,等於零時在直線上
#include#includeusing namespace std;
struct point
ans[100],p[100];
bool cmp(point p1,point p2)
ans[temp++]=p[i];
} int flag=temp;
for(i=m-1;i>=0;i--)
ans[temp++]=p[i];
} temp--;
sort(ans,ans+temp,cmp);
for(i=0;icout<} return 0;
}
NYOJ 78 圈水池(凸包基礎)
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!籬笆足夠多,並且長度可變 輸入第一行輸...
NYOJ 78 圈水池(簡單凸包)
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!籬笆足夠多,並且長度可變 輸入第一行輸...
圈水池 nyoj 78 凸包演算法
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述有乙個牧場,牧場上有很多個供水裝置,現在牧場的主人想要用籬笆把這些供水裝置圈起來,以防止不是自己的牲畜來喝水,各個水池都標有各自的座標,現在要你寫乙個程式利用最短的籬笆將這些供水裝置圈起來!籬笆足夠多,並且長度可變 輸入第一行輸入...