BZOJ1209 最佳包裹 (三維凸包 增量法)

2022-05-07 01:36:10 字數 1290 閱讀 4423

求三維凸包的表面積。n≤

100n≤1

00暴力往當前的凸包裡加點。o(n

2)o(

n2)。題解詳見大佬部落格

擾動函式sha

kesh

ake是為了避免四點共面。

實測epse

ps開到1e−10

1e−1

0才過

#include

using

namespace std;

#define il inline

const

double eps =

1e-10

;const

int maxn =

105;

il double

rand()

il double

reps()

;int n;

struct point

il double

len(

) il point operator

-(point o);}

il point operator

*(point o);}

il double

operator

&(point o)

}a[maxn]

;struct face

il double

area()

}f[maxn<<1]

, tmp[maxn<<1]

;bool

see(face a, point b)

int cnt;

bool vis[maxn]

[maxn]

;void

convex3d()

};f[++cnt]

=(face)};

for(

int i =

4, cur; i <= n;

++i)

for(

int j =

1; j <= cnt;

++j)

for(

int k =

0; k <3;

++k)};

}for

(int j =

1; j <= cur;

++j) f[j]

= tmp[j]

; cnt = cur;}}

intmain()

BZOJ1209 最佳包裹 (三維凸包 增量法)

求三維凸包的表面積。n 100 n le100 n 100 暴力往當前的凸包裡加點。o n 2 o n 2 o n2 題解詳見大佬部落格 擾動函式sha keshake shak e是為了避免四點共面。實測e ps epsep s開到1e 101e 10 1e 10才過 include using ...

三維凸包 BZOJ 最佳包裹

模板題解 增量法怎麼這麼強啊。擾動很重要,直接掛50分。判斷可視邊緣的方法很神奇,將每個三角面的三邊順方向打有向標記,那麼只有乙個方向有邊的點對就是邊緣點對,直接建面。總的面數是o n o n o n 複雜度為o n 2 o n 2 o n2 可以用乙個有理有據但是有點麻煩的優化 可以做到o n l...

BZOJ 1209 HNOI2004 最佳包裹

一眼掃過去,凸包?資料範圍什麼這麼小?10分鐘碼完了andrew,發現答案不對 臥槽怎麼是三維的。三維凸包不會啊tat 對著白書抄了一遍增量法,水過去了 你這樣真的好嗎 好吧回去再看一遍增量法,感覺很好玩的樣子。很想知道status裡0ms的大爺是怎麼做到的 隨機增量?include include...