計蒜客 羊圈復原 (凸包模板)

2021-08-07 17:49:49 字數 734 閱讀 2642

題目大意:判斷羊圈是否能夠復原。

題目思路:首先先求出凸包,如果凸包每條邊上都有點存在的話,那麼這凸包和原來是一樣的,否則有可能和原來不一樣。也就是說你需要來判斷兩點之間是否是緊挨著的,如果是則不滿足。

坑點:用graham_scan的演算法,會忽略一開始時三點共線的情況,所以要考慮這種情況,否則會出現各種莫名其妙的錯誤。三點共線!!!三點共線!!!三點共線!!!

**:

#include using namespace std;

const int n=10001;

const double eps=1e-10;

struct node

point[n],ch[n];

int n,len;

double multi(node a,node b,node c) //a在cb左邊則小於0 ,a在cb的右邊則大於0

double dis(node a,node b) //距離相同去最短

void graham_scan(node point[n],node ch[n],int n)

len=top+1;

}bool judge(node a,node b)

int main()

{ int i;

scanf("%d",&n);

for(i=0;i

計蒜客47 圈果樹(二維凸包)

傳送門 小馬承包了乙個果園,想修乙個圍欄,但是不希望砍掉任何的果樹。對於給出的所有的果樹的座標,計算一下最小的圍住所有的果樹的圍欄的長度。輸入資料的第一行包括乙個整數 n 0 n 10,000 表示農夫約翰想要圍住的放牧點的數目。接下來 n 行,每行由兩個由空格分隔的實數組成,xi 和 yi,對應平...

計蒜客 箱子剩餘空間 (01揹包)

有乙個箱子容量為v 正整數,o v 20000 同時有n個物品 o n 30 每個物品有乙個體積 正整數 要求從 n 個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 第一行,乙個整數,表示箱子容量 第二行,乙個整數,表示有n個物品 接下來n行,分別表示這n個物品的各自體積。輸出格式 ...

計蒜客 節食的限制(01揹包)

bessie像她的諸多姊妹一樣,因為從farmer john的草地吃了太多美味的草而長出了太多的贅肉。所以fj將她置於乙個及其嚴格的節食計畫之中。她每天不能吃多過h 5 h 45,000 公斤的乾草。bessie只能吃一整捆乾草 當她開始吃一捆乾草的之後就再也停不下來了。她有乙個完整的n 1 n 5...