poj1228穩定凸包

2022-03-16 00:56:55 字數 1344 閱讀 8151

就是給一系列點,看這是不是乙個穩定凸包

穩定凸包是指乙個凸包不能通過加點來使它擴大面積,也就是說每條邊最少有三個點

判斷的地方寫錯了,寫了兩邊迴圈,其實陣列s已經排好了序,直接每三個判斷就好了

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pi acos(-1.0)

#define ll long long

#define mod 1000000007

#define ls l,m,rt<<1

#define rs m+1,r,rt<<1|1

#pragma comment(linker, "/stack:1024000000,1024000000")

using

namespace

std;

const

double g=10.0,eps=1e-7

;const

int n=1000+10,maxn=500+100,inf=0x3f3f3f

;struct

point;

point p[n],s[n];

intn;

double

dir(point p1,point p2,point p3)

double

dis(point p1,point p2)

bool

comp(point p1,point p2)

bool

graham()

}swap(p[

0],p[pos]);

sort(p+1,p+n,comp);

int top=2

; p[n]=p[0

]; s[

0]=p[0],s[1]=p[1],s[2]=p[2

];

for(int i=3;i<=n;i++)

/*cout

for(int i=1;i1;i++)

return1;

}int

main()

if(graham())cout<

yes"

<

else cout<

<

}return0;

}/*14

0 10 2

0 30 4

*/

view code

Poj1228 穩定凸包

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

POJ1228 穩定凸包

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

POJ 1228 穩定凸包

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