Gravatar
FoolMike
积分:5206
提交:1165 / 2240
第十个点出现了所有点共面的情况,请小心!

Gravatar
_Itachi
积分:4326
提交:1498 / 3922
先吐槽自己把减号重载错了WA无数次...
再想吐槽为毛把精度设成1e-15或者1e-20就过不了,设成1e-10就过了??!!

Gravatar
Go灬Fire
积分:3414
提交:1738 / 3778

Gravatar
AntiLeaf
积分:3396
提交:1527 / 4369
%%%

Gravatar
_Itachi
积分:4326
提交:1498 / 3922
额..写完了才发现自己写的是求最小体积的三维凸包...

Gravatar
NVIDIA
积分:1171
提交:301 / 546
我就占楼玩,忽略我

Gravatar
Satoshi
积分:3003
提交:678 / 1922
重新写了卷包裹法把O(n^4)优化到了O(nh),h为三维凸包上的顶点数,但被精度卡了一万次。。。。。

Gravatar
Satoshi
积分:3003
提交:678 / 1922
回复 @cstdio : 会不会是这里scanf比cin慢

Gravatar
cstdio
积分:4748
提交:1198 / 2108
尼玛,明明是一模一样的算法我写出来就是最慢的那个……

Gravatar
Satoshi
积分:3003
提交:678 / 1922
法向量,真是个强大的东西。
几乎可以解决空间中的一切问题。
从点点距离,点面距离,线线距离,面面距离,线面角,二面角,异面直线所成角,四点三棱锥体积,都是渣渣。
再加上行列式和平面方程的辅助。只要有坐标,就几乎没有法向量解决不了的问题。
----------------------------------------------------------------------------------------------------华丽丽的分割线
坑爹的这题,还要使点发生微量波动,否则就容易出现共面的点,面积计算重复(本来不知道如何解决
共面问题,搜索大神QhelDIV的题解才解决这个问题,在此本蒟蒻膜拜神犇)
可以用随机函数实现
三角形面积用向量叉乘(等于叉乘1/2)解决
三角形面积的2倍等于两个向量的叉乘向量(a,b,c), 而这个向量等价于行列式
\[
{\bf{A}} = \left(\begin{array}{lll}
i & j & k\\
x2-x1 & y2-y1 & z2-z1\\
x3-x1 & y3-y1 & z3-z1\\
\end{array}\right)\]
若求出该向量的表达式为ai+bj+ck;
则该向量的模的一半即为三角形的面积S=0.5*sqrt(a^2+b^2+c^2);
判断金属最外层的表面方法一:QhelDIV光神法
建立三个点的两个向量的叉乘
求出(叉乘向量),将其他的点和这三个点中任意一个点做一条向量,求该向量与叉乘向量的数量积,如果全部都是正数或负数
则说明其他的点都在这三个点组成平面的一侧,则该三个点就是最外层之一
我的原创方法二:
直接求出三角形三个点的平面方程,若其他的点(x,y,z),令S=(Ax+By+Cz+D)(带入平面方程)若S全部同号,则为最外层)
该题细节非常多,需要注意
关于行列式的概念与应用:可以百度,也可以看《线性代数》。

Gravatar
Makazeu
积分:3005
提交:780 / 1516
orz 光牛 把金属包裹这题推掉了

Gravatar
QhelDIV
积分:2339
提交:638 / 1737
又是喜闻乐见的精度问题