题目名称 | 63. [HNOI 2004] 金属包裹 |
---|---|
输入输出 | enwrap.in/out |
难度等级 | ★★★★★ |
时间限制 | 3000 ms (3 s) |
内存限制 | 512 MiB |
测试数据 | 11 |
题目来源 | BYVoid 于2008-07-11加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:61, 提交:299, 通过率:20.4% | ||||
_Itachi | 100 | 0.001 s | 0.03 MiB | C++ |
真呆菌 | 100 | 0.006 s | 1.55 MiB | C++ |
zhengtn03 | 100 | 0.007 s | 0.38 MiB | C++ |
Hale | 100 | 0.011 s | 17.58 MiB | C++ |
6+1 | 100 | 0.025 s | 1.08 MiB | C++ |
zhengtn03 | 100 | 0.027 s | 0.35 MiB | C++ |
xxz | 100 | 0.033 s | 3.59 MiB | C++ |
FoolMike | 100 | 0.040 s | 0.51 MiB | C++ |
粘粘自喜 | 100 | 0.040 s | 1.20 MiB | C++ |
可以的. | 100 | 0.041 s | 0.29 MiB | C++ |
关于 金属包裹 的近10条评论(全部评论) | ||||
---|---|---|---|---|
第十个点出现了所有点共面的情况,请小心!
| ||||
先吐槽自己把减号重载错了WA无数次...
再想吐槽为毛把精度设成1e-15或者1e-20就过不了,设成1e-10就过了??!! | ||||
| ||||
%%%
AntiLeaf
2016-08-28 15:32
9楼
| ||||
额..写完了才发现自己写的是求最小体积的三维凸包...
_Itachi
2016-08-28 15:08
8楼
| ||||
我就占楼玩,忽略我
NVIDIA
2016-03-28 19:46
7楼
| ||||
重新写了卷包裹法把O(n^4)优化到了O(nh),h为三维凸包上的顶点数,但被精度卡了一万次。。。。。
Satoshi
2015-10-19 16:20
6楼
| ||||
回复 @cstdio : 会不会是这里scanf比cin慢
Satoshi
2015-03-07 22:17
5楼
| ||||
尼玛,明明是一模一样的算法我写出来就是最慢的那个……
| ||||
法向量,真是个强大的东西。
几乎可以解决空间中的一切问题。 从点点距离,点面距离,线线距离,面面距离,线面角,二面角,异面直线所成角,四点三棱锥体积,都是渣渣。 再加上行列式和平面方程的辅助。只要有坐标,就几乎没有法向量解决不了的问题。 ----------------------------------------------------------------------------------------------------华丽丽的分割线 坑爹的这题,还要使点发生微量波动,否则就容易出现共面的点,面积计算重复(本来不知道如何解决 共面问题,搜索大神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全部同号,则为最外层) 该题细节非常多,需要注意 关于行列式的概念与应用:可以百度,也可以看《线性代数》。
Satoshi
2015-03-05 22:41
3楼
|
H公司生产了一种金属制品,是由一些笔直的金属条支撑起来的,金属条和别的金属条在交点上被焊接在了一起。现在由于美观需要,在这个产品用一层特殊的材料包裹起来。公司为了节约成本,希望消耗的材料最少(不计裁剪时的边角料的损失)。
现在给定该产品的顶点的个数,以及所有顶点的坐标,你需要根据输入的计算出包裹这个产品所需要的材料的最小面积。结果要求精确到小数点后第六位。(四舍五入)
输入若干行组成:
第1行是一个整数n(4 <= n <= 100),表示顶点的个数;
第2行到第n+1行,每行是3个实数xi,yi,zi,表示第i个顶点的坐标。每个顶点的位置各不相同。
输出文件只有一个实数,表示包裹一个该产品所需的材料面积的最小值。
4 0 0 0 1 0 0 0 1 0 0 0 1
2.366025