傳送門
三維凸包模板題……只是聽了聽計算幾何的課之後心血來潮想寫的……
我的做法很無腦是吧……暴力列舉三個點組成的三角形,然後列舉剩下的點,判斷其餘點是否都在這個三角形的同一側,是的話則說明這個三角形是凸包的乙個面。
理論複雜度應該是$o(n^4)$,不過看上去跑得飛快?人帥自帶小常數哈哈
這個故事告訴我們:大力出奇蹟
……
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8view codeusing
namespace
std;
9const
int maxn=110;10
const
long
double eps=1e-15;11
struct
point
14 point operator-(const point &a)const//
a - b = b到a的位移
15 point operator/(const
long
double &a)const
16}a[maxn];
17typedef point vector;
18long
double
noise();
19long
double dot(const vector&,const vector&);
20 vector cross(const vector&,const vector&);
21long
double length(const vector&);
22long
double area2(const point&,const point&,const point&);
23 vector lawvector(const vector&,const vector&);
24long
double distance(const point&,const point&,const vector&);
25 ifstream fin("
enwrap.in");
26 ofstream fout("
enwrap.out");
27long
double ans=0.0;28
intn,t;
29int
main()
37vector a;
38long
double
d;39
bool
bad;
40for(int i=1;i<=n;i++)for(int j=1;jfor(int k=1;k)51}
52if(!bad)ans+=area2(a[i],a[j],a[k]);53}
54 ans/=2.0
;55 fout<
<
56return0;
57}58long
double
noise()
64 inline long
double dot(const vector &a,const vector &b)
65 inline vector cross(const vector &a,const vector &b)
66 inline long
double length(const vector &a)
67 inline long
double area2(const point &a,const point &b,const point &c)
68 inline vector lawvector(const vector &a,const vector &b)//
兩個向量的叉積一定同時垂直於這兩個向量
72 inline long
double distance(const point &a,const point &p,const vector &n)//
(p,n)是平面的點法式,n是單位向量
73/*
74三維凸包——暴力法
75暴力列舉三個點組成的三角形,
76判斷其他點是否都在這個三角形的同側,
77是則說明這個三角形一定是凸包的乙個面。
78*/
話說一開始忘了怎麼求平面的法向量,手推了個公式然後發現搞出nan了……因為我推的公式預設法向量在z維的長度不為0,但其實有很多平面的法向量是垂直於z軸的,然後就除零**了……又腦補了很久,後來才想起來兩個向量的叉積必定同時垂直於這兩個向量……這人沒救了
還有一件事,這題卡精度,隨機擾亂搞得太大會炸精度……計算幾何毀我青春
HNOI2004寵物收養所
time limit 10 sec memory limit 162 mb submit 2796 solved 995 submit status discuss 最近,阿q開了一間寵物收養所。收養所提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,...
HNOI2004 寵物收養場
凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這樣他就能夠...
HNOI2004 樹的計數
hnoi2004 樹的計數 這道題資料水的一匹我無話可說,謎之錯誤 陣列賦值的時候乙個下標寫錯了變數 居然只wa了一組。寫這道題關鍵需要知道prufer序列以及cayley定理。prufer數列,可以用來解一些關於無根樹計數的問題。prufer數列是一種無根樹的編碼表示,對於一棵n個節點帶編號的無根...