POJ1228 穩定凸包

2021-09-10 22:04:28 字數 1694 閱讀 4745

看題半天沒看懂意思,以為就是判斷是否有凸包結果。。。。看了題解才知道,是要確定乙個凸包是否唯一,即不能通過新增點變成新的凸包,也就是凸包的每條邊上至少有3個點。

#include#include#include#include#include#define maxl 1010

#define eps 1e-8

using namespace std;

inline int sgn(double x)

};inline bool cmp(const point &a,const point &b)

polygon_convex convex_hull(vectora)

int k=m;

for(int i=int(a.size())-2;i>=0;i--)

res.p.resize(m);

if(a.size()>1)

res.p.resize(m-1);

return res;

}int n;

vectora;

bool ans;

inline void prework()

}inline bool point_on_seg(point &a,point &b,point &c)

inline void mainwork()

res.p.push_back(res.p[0]);

bool flag;int l=res.p.size(),l2=a.size();

for(int i=1;i上面那個由於n=1000,所以直接n方求每條邊上多少點了了,其實也可以o(n)求

#include#include#include#include#include#define maxl 1010

#define eps 1e-8

using namespace std;

inline int sgn(double x)

};int n;

int num[maxl];

vectora;

bool ans;

inline bool cmp(const point &a,const point &b)

inline bool point_on_seg(point &a,point &b,point &c)

polygon_convex convex_hull(vectora)

res.p[m++]=a[i];

} int k=m;

for(int i=int(a.size())-2;i>=0;i--)

res.p[m++]=a[i];

} res.p.resize(m);

if(a.size()>1)

res.p.resize(m-1);

return res;

}inline void prework()

}inline void mainwork()

res.p.push_back(res.p[0]);

bool flag;int l=res.p.size(),l2=a.size();

/*for(int i=1;i*/

for(int i=1;iif(num[i]<2)

ans=false;

}inline void print()

int main()

return 0;

}

Poj1228 穩定凸包

題意 給定一些點,問這些點能不能夠成穩定的凸包,這有點不明不白的,我也是看了別人的報告才搞明白題意的,就是如果凸包上的一條邊如果不包含三個以上的點,它就是可以被向外擴充套件的.解題 弄明白了題意,以為會很簡單了,直接掃瞄求凸包就行了,而且是不用退棧的過程,後來在實現過程中才發現,即使給出的所有點都在...

POJ 1228 穩定凸包

解題思路 所謂穩定凸包就是不存在凸包外加入乙個點使得形成的新凸包還包含原凸包的所有點。所以要使他是穩定的,那麼凸包的每條邊都必須有三個點,也就是除了兩個端點外邊上還有一點,這樣如果要在外加入乙個點的話必然使得邊上的點被消除,所以這樣的凸包也就是穩定的了。include include include...

poj1228穩定凸包

就是給一系列點,看這是不是乙個穩定凸包 穩定凸包是指乙個凸包不能通過加點來使它擴大面積,也就是說每條邊最少有三個點 判斷的地方寫錯了,寫了兩邊迴圈,其實陣列s已經排好了序,直接每三個判斷就好了 include include include include include include inclu...