求三維凸包的表面積。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...